トップページ⇒tech
989コメント310KB

くだすれPython(超初心者用) その24

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん2014/08/03(日) 04:42:31.25ID:nSUL9jmo
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで

前スレ
くだすれPython(超初心者用) その23
http://peace.2ch.net/test/read.cgi/tech/1400479217/
関連スレ
Pythonのお勉強 Part49
http://toro.2ch.net/test/read.cgi/tech/1387528488/

◆関連リンク Python の Home Page
ttp://www.python.org/

◆長いコードはこういうところにはってください
ttp://ideone.com/
ttp://codepad.org/
ttp://pastebin.com/
ttp://dpaste.com/

◆まとめwiki
ttp://python.rdy.jp/
0002デフォルトの名無しさん2014/08/03(日) 04:43:50.86ID:nSUL9jmo
|....,,__
|_::;; ~"'ヽ
| //^''ヽ,,)
|  i⌒"
| ∀`) < 誰もいない きのこるならいまのうち
|⊂
| ノ
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
      |( ´∀`) < きのこ のこーのこ げんきのこ ♪
      |(ノ   |つ
      |     |
     ⊂ _ ノ
       ""U
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
     (´∀` )| < エリンギ まいたけ ブナシメジ ♪
    ⊂|  (ノ |
      |     |
      ヽ _ ⊃
      .U""
|
| ミ
| ミ  サッ!
| ミ
|
0003デフォルトの名無しさん2014/08/03(日) 04:46:53.92ID:bPGWsjSY
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
0004デフォルトの名無しさん2014/08/03(日) 06:51:11.15ID:Qqzbedo3
http://www.buzzword.jp/img/face10.png
0005デフォルトの名無しさん2014/08/03(日) 06:53:32.59ID:OFXCnhud
pythonで2chに書きこむ方法教えてください 
0006デフォルトの名無しさん2014/08/03(日) 06:57:33.93ID:PE5P6N+l
1ch夏休み電話相談室で聞いてみよう
0007デフォルトの名無しさん2014/08/03(日) 07:19:11.31ID:zU4sk6Ng
               ノ      ゚.ノヽ  , /}      ...
            ,,イ`"     、-'   `;_' '    ..::::::::::::::...
   ,-、  _.._   (        (,(~ヽ'~     ..:::::::::::::::::::::::
 )'~  レー'  〉   ヽ       i`'}       .:::::::::::::::::::::::
 ~つ     '-ー、  i       | i'     ...:::::::::::::::::::::::
 /       <  /     。/   !  ......:::::::::::::::::::::::::    これは>>1乙じゃなくて
/         ~^´     /},-'' ,●::::::::::::::::::::::::::::::::::::
i、        ,i' _,,...,-‐-、/    i  ::::::::  .:::::::::::::
..ゝ        <,,-==、   ,,-,/      .:::::::::::            放射能がうんたら
 )       {~''~>`v-''`ー゙`'~       ..:::::::::                          ........::.
 {        レ_ノ            ..::::::::.                         ......:::::::::
ノ         ''           ..:::::::                        ...::.:...:::::::::
                     .:::::::::                     ...:......:::::::::::: .
                    .:::::::::::.        .....      ..  ..::::::::::::::::::::::::   :::.
                    ::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ::  ::..
                    .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::    ::.
                    ::::::::::::::::: :::::::::::::::::::::::::::::: :::::
                          .::    ::.  :::
0008デフォルトの名無しさん2014/08/03(日) 07:34:08.35ID:OFXCnhud
お願いします 教えてください
0009デフォルトの名無しさん2014/08/03(日) 07:40:16.12ID:zU4sk6Ng
>>4
どこかで見た顔だと思ったら
javascript ぐぐったらいつも出て来るあれか
0010デフォルトの名無しさん2014/08/03(日) 07:41:45.56ID:OFXCnhud
>>4
こいつうざいからadblockで顔面消してるわ
0011デフォルトの名無しさん2014/08/03(日) 12:28:44.93ID:OFXCnhud
#coding:utf-8
import urllib

keyword = u"テスト"
print urllib.urlencode(keyword)

これでやるとエラーが出ます。なぜですか?
0012デフォルトの名無しさん2014/08/03(日) 12:38:42.66ID:4e8mKRmq
いまどき仕事でもないのにPython2使ってるって人前でよく言えるよな。
0013デフォルトの名無しさん2014/08/03(日) 13:25:36.46ID:6r413W6I
超初心者用って書いてあるけど最近湧いてくる超初心者未満のクレクレ君はなんなの?
自分で作る気ないならPythonじゃなくて他所でGoogleの使い方教えてもらえよ
0014デフォルトの名無しさん2014/08/03(日) 13:34:58.83ID:2WFJIVoF
>>11
英語苦手ならPythonはやめといた方がいいよ
0015デフォルトの名無しさん2014/08/03(日) 14:07:07.05ID:+KLBY5j7
>>10
悪役商会って俳優団体に顔面陳列罪ってのがいてだな
0016デフォルトの名無しさん2014/08/03(日) 14:23:03.31ID:T59meZIw
>>11
馬鹿には無理
0017デフォルトの名無しさん2014/08/03(日) 14:29:33.86ID:+KLBY5j7
>>12
正直わざわざ地雷原に踏み込む自殺志願者にしか見えないよね
そんな馬鹿救ってやる気がおきるはずもない
0018デフォルトの名無しさん2014/08/03(日) 20:14:42.16ID:mooYogGV
numpyとmatplotlibを調べなきゃーと思いつつも手が動かない
numpyの配列が使えて、matplotlibで棒グラフと折れ線グラフを出したいだけなのだけど
参考にしやすいサイトありませんかね・・・

というかPythonの普通のオブジェクトの理解もまだ出来てないのに
いきなり外部ライブラリにいくのは無理があるのかなあ
0019デフォルトの名無しさん2014/08/03(日) 20:26:25.78ID:+KLBY5j7
それぞれのチュートリアルの1ページ目読めば事足りんじゃね
numpyはthe basicsだけ読めばいいような気もする

http://wiki.scipy.org/Tentative_NumPy_Tutorial#head-6a1bc005bd80e1b19f812e1e64e0d25d50f99fe2
http://matplotlib.org/users/pyplot_tutorial.html

matplotlibのチュートリアルの中ではnumpy使ってるところもある
0020デフォルトの名無しさん2014/08/03(日) 20:47:51.24ID:mooYogGV
>>19
ありがとう、ここのthe basicsを勉強してからmatplotlibに行こうと思います
この位の量ならなんとかなりそうな気がします

matplotlibの公式サンプルは試していたのですが
numpyが前提な感じなので先にmatplotlibにいくと辛い感じでした
せめてthe basicsを読んでから行くことにします

ありがとうございました!
0021デフォルトの名無しさん2014/08/03(日) 21:19:44.51ID:mooYogGV
追記で原因が分かったので・・・

from numpy import *
この辺の理解があやふやだったみたいで(matplotlibのサンプルでもこの系統で四苦八苦していました)
今は理解しましたが、表記は簡単だけど、対話モード以外でこれを使うことはあるのだろうか・・・

他の言語は少し触ったことはあるのですが、Python自体の初心者なので
import numpy as np
みたく頭の中で翻訳して
np.array([1,2,3,4])
で実際書いて練習して見ることにします

Pythonの配列型は大分他の言語と変わっている気がするので
それとの違いなんかも一緒に違いを踏まえながら勉強してみます

一年後にはネットワーク関係のスクリプトも組めるようなんとかしたいですのですが
ここで詰まっているようだと大分先は長そうだ・・・orz
0022デフォルトの名無しさん2014/08/03(日) 23:11:57.77ID:aN4Ndech
GAEならpython2だろ
0023デフォルトの名無しさん2014/08/03(日) 23:50:20.18ID:YEfQO8dP
初心者です。前々から誰かに訊いてみたかったんですが
import matplotlib.pyplot as plt
plt.plot([1,2,3])
plt.show()
みたいな書き方をちょっと気持ち悪く感じて、
myplot = plt.Plot()
myplot.plot([1,2,3])
myplot.show()
のように、なにかしらのインスタンスを作ってそのメソッド呼ぶ感じでプロットしていきたい
というように感じることがあるんですが、
これは「その感覚はないわ〜」みたいな感じ、それとも「あーわからんじゃない」みたいな感じですか?
0024デフォルトの名無しさん2014/08/03(日) 23:52:02.01ID:+KLBY5j7
その状況ならその感覚はない
myplotが状態を持ってるようには見えないから
0025デフォルトの名無しさん2014/08/03(日) 23:59:04.93ID:+KLBY5j7
ただし、モジュール関数にするとimportした時に特大のオーバーヘッド生じるような場合なら
そのパターンは十分あり得る
0026デフォルトの名無しさん2014/08/04(月) 00:48:44.87ID:CJ83fxk4
>>23
C/FORTRAN 向け科学技術計算パッケージのプロットライブラリや
gnuplot を使った経験があれば、matplotlib は素直な設計だから、
「その感覚はないわ〜」みたいに感じる

ただ最近はオブジェクト指向の考え方が普及しているから、
上記の手続き型プロットライブラリを気持ち悪く感じる人がいても
「あーわからんじゃない」みたいに感じる

たとえば「手元にX-Yプロッタ装置を1台だけ所有していて、
その装置にあれこれコマンド(=手続き)実行を命令している.....」
みたいな感じで考えればいいんじゃないかと思う
0027デフォルトの名無しさん2014/08/04(月) 08:12:31.68ID:MisW0pwU
設計思想の古いライブラリ由来のものはそういうものだと思って使うしかないな
OpenGLとかもキモい
0028デフォルトの名無しさん2014/08/04(月) 08:48:39.79ID:fW6TrluV
OpenGL は設計が古いのもあるかも知れないけど
当時の感覚からしても設計思想自体ちょっとダサい方だと思う
0029デフォルトの名無しさん2014/08/04(月) 11:10:44.04ID:VkhvqJe+
>>11
#coding:utf-8
import urllib

keyword = u"テスト"
print urllib.urlencode(keyword.encode('utf-8'))
0030デフォルトの名無しさん2014/08/04(月) 11:33:17.60ID:5GCVsUHq
>>29
そいつ>>13が指摘してる前スレで2ch書き込みスクリプトくれくれ言ってたやつだぞ
2ch荒らすのに使うの見え見えなやつを手助けするなよ
0031デフォルトの名無しさん2014/08/04(月) 12:11:45.07ID:TGYEvOJ0
findUnvisitedChildってなんですか?ググっても情報ないんですけど
0032デフォルトの名無しさん2014/08/04(月) 12:19:40.66ID:TGYEvOJ0
あとすいませんStack()ってなんてライブラリですか?
http://ja.wikipedia.org/wiki/%E6%B7%B1%E3%81%95%E5%84%AA%E5%85%88%E6%8E%A2%E7%B4%A2
0033232014/08/04(月) 12:54:29.55ID:WexAwjaP
>>24-28
ありがとうございます。とくに >>26 さん親切にどうもありがとう。
だいぶ雰囲気掴めたと思います。
0034デフォルトの名無しさん2014/08/04(月) 13:41:03.22ID:VkhvqJe+
>>30
領海
0035デフォルトの名無しさん2014/08/04(月) 19:50:55.97ID:z+yz5IZL
10年以上前にWindowsプログラムで遊んでいた時
OpenGLの他にDirect3Dしか選択肢がなくてなんとなくDirectXを選んだけど
公開サンプルソースの少なさに泣いたのを思い出して鬱になった
というか今学問系だとどういう3Dライブラリを使うのが普通なの?

ってPython関係ないな
0036デフォルトの名無しさん2014/08/04(月) 23:21:09.94ID:J4k0EnNa
http://codepad.org/UITexHiK
↑リストを使ったキューをfrom collections import dequeを使ったものに書き換えました↓
http://codepad.org/8NGcgQ5h
TypeError: 'int' object is unsubscriptableが出たんですけどどうか着替えたらいいのか教えてください
0037デフォルトの名無しさん2014/08/04(月) 23:21:46.19ID:J4k0EnNa
どうか着替えたら

どう書き換えたら
0038デフォルトの名無しさん2014/08/05(火) 00:36:25.51ID:pv4OEjEt
a = 5
for i in range(0, a, 1):
print(i)
a = 3
途中でaを3に変えたのに0 1 2 3 4と表示されます
なぜですか?
0039デフォルトの名無しさん2014/08/05(火) 00:36:34.21ID:HLOzo43t
q.append(v)→q.append(newPath)
0040デフォルトの名無しさん2014/08/05(火) 01:15:43.70ID:jUXvba1w
>>38
それでrange()の挙動が変わるような実装がクソめんどくさそうな仕様の言語ってあんの?
0041デフォルトの名無しさん2014/08/05(火) 02:47:27.94ID:+4GKMU4F
>>38
正確な説明とはいえないけど、変数自体ではなく、変数に入っているモノが関数に渡される
2行目のrange()にはaではなく5を渡している
4行目でaに3を入れなおしてもrange()に渡した5には影響しない
0042デフォルトの名無しさん2014/08/05(火) 08:04:43.14ID:v7EbVobV
なるほどたしかに
たとえばPHPならこうやると0 1 2って表示されますが
$a = 5;
for ($i=0; $i<$a; $i++){
$a = 3;
echo $i;
}
pythonでやる場合は
a = 5
i = 0
while a > i:
print(i)
a = 3
ってやる方法しか無いでしょうか?
0043デフォルトの名無しさん2014/08/05(火) 08:20:44.86ID:0Nh3i6Wx
>>42
a = 5
for i in range(a):
 if i >= a:
  break
 print(i)
 a = 3
0044デフォルトの名無しさん2014/08/05(火) 09:38:36.40ID:Hz72ppwZ
>>38の質問をはっきりさせた方がいいと思う
for inがわからないという事なのか。
それとも、↓のlist(r)の出力がa=3した後も変わらない事を何故かと聞いてるのか。

>>> a = 5
>>> r = range(a)
>>> list(r)
[0, 1, 2, 3, 4]
>>> a = 3
>>> list(r)
[0, 1, 2, 3, 4]

あと、ループ内でaを再定義するぐらいなら、ループ入る前にやっとけよって思いました
0045デフォルトの名無しさん2014/08/05(火) 10:02:26.44ID:0Nh3i6Wx
見返したら>>43はマズイな
import sys
for i in range(sys.maxsize):
aもiも変更したいならwhileだな
0046デフォルトの名無しさん2014/08/05(火) 20:49:22.56ID:+4GKMU4F
>>42
ループの終了条件を変えられる関数は作れるけど、Pythonのfor文の流儀に反している気がしてお勧めできない

def my_range(cond):
 i = cond[0]
 while i < cond[1]:
  yield i
  i += cond[2]

c = [0, 5, 1]
for i in my_range(c):
 print(i)
 c[1] = 3
0047デフォルトの名無しさん2014/08/05(火) 21:08:55.48ID:3MsCZ4lI
>>39
そこは関係ないようです
0048デフォルトの名無しさん2014/08/05(火) 21:38:14.43ID:0mdzPr1d
>>47
このスクリプトで q がどうなってて、従って path に何が入ることになるかは理解できてますか?
0049デフォルトの名無しさん2014/08/05(火) 22:12:26.80ID:HLOzo43t
>>47
わかった
>>39のに加えてdequeの初期化の仕方が間違ってる

deque([start])→deque([[start]])
http://codepad.org/RGKUJCCu
0050デフォルトの名無しさん2014/08/06(水) 09:50:31.72ID:4kkHNvLc
>>46
>Pythonのfor文の流儀

なにそれkwsk
0051デフォルトの名無しさん2014/08/06(水) 19:35:59.89ID:IBfbXB7R
Pythonで計算したデータをJavaに渡したいのですがどうするのがよいでしょうか?
ファイルに書き出すくらいしか分からないのですが
0052デフォルトの名無しさん2014/08/06(水) 20:19:09.28ID:6xA8BSBL
RPC
RMI
0053デフォルトの名無しさん2014/08/06(水) 22:37:34.13ID:Hc5bYjkL
>>51
ありがとうございます
0054デフォルトの名無しさん2014/08/08(金) 12:19:52.03ID:2ZXfhlXJ
pythonからctypesでdll呼んでdll側のクラスを引き継ぐことできる?
やっぱりpythonでdll呼ぶようのdllを作ったほうがいいのかな
0055デフォルトの名無しさん2014/08/08(金) 13:58:01.23ID:LVetnHZi
ミラーニューロン
0056デフォルトの名無しさん2014/08/08(金) 19:03:08.34ID:YG2OXIF+
IDLEでのPythonファイルの作り方をここのwiki見てやっと知ったぜ・・・
長い長い道のりだった

対話モードみたくインデントを自動でしてくれなくてしょんぼりしてるけど
0057デフォルトの名無しさん2014/08/09(土) 00:29:01.22ID:l2WdSHx9
https://www.youtube.com/watch?v=ZYShUXFVLvQ
https://www.youtube.com/watch?v=oi2PEmrOs3o
https://www.youtube.com/watch?v=u4KcM6EBOcM
0058デフォルトの名無しさん2014/08/09(土) 06:49:31.07ID:l2WdSHx9
https://www.youtube.com/watch?v=nTGCZAHm6ao
0059デフォルトの名無しさん2014/08/09(土) 11:01:15.36ID:cMAC0zr6
>>57-58
糞過ぎワロス
0060デフォルトの名無しさん2014/08/09(土) 13:46:44.09ID:t54vu+MJ
知らんがPygameってまともな速度出るの?
GDI使ってるのと変わんないんじゃないかって気がするけど
0061デフォルトの名無しさん2014/08/09(土) 14:02:57.80ID:odLGSBLG
DirectXやOpenGLなどグラボの恩恵受けられるってこと?
0062デフォルトの名無しさん2014/08/09(土) 14:04:57.17ID:lFfYI/Nk
GDIで速度的に十分じゃないか。
もっと遥かに遅いFlashですらゲーム作れるんだし。
0063デフォルトの名無しさん2014/08/09(土) 14:08:47.59ID:pfgkOg0q
どんなゲームかによるべさ
少なくとも何もできないようなライブラリが数年にわたって精力的に開発されているようなら
それは正気の沙汰じゃない
0064デフォルトの名無しさん2014/08/09(土) 14:29:00.61ID:cMAC0zr6
日本語でおながいしやす
0065デフォルトの名無しさん2014/08/09(土) 14:53:51.79ID:pfgkOg0q
ニホンゴワカリマセン
0066デフォルトの名無しさん2014/08/09(土) 15:27:47.30ID:l2WdSHx9
動画自分で作ってみれば大変さ判ると思う
0067デフォルトの名無しさん2014/08/09(土) 15:51:28.58ID:odLGSBLG
速度が問題になるようならpygameよりpython自体の頭打ちが
先に問題になりそう。
その場合cythonやnumpy使うことになると思うが。

経緯的にはPySDL > pygame > PySDL2
ってまた元のさやに戻りつつあるんだっけ?
0068デフォルトの名無しさん2014/08/09(土) 17:38:17.96ID:fubXRsBH
元のさや姉
0069デフォルトの名無しさん2014/08/09(土) 21:24:42.48ID:K1gOBgfb
CodeEvalのFizzBuzzで90点しか出ないのですが、何が問題なのかわかる方教えてくださいませんか?
https://www.codeeval.com/open_challenges/1/

import sys
test_cases = open(sys.argv[1], 'r')
for test in test_cases:
(F, B, N) = map(int, test.split())
FB = F * B
for num in range(1,N+1):
if num > 1:
print(" ",end = "")
if num % (FB) == 0:
print('FB', end ="")
elif num % F == 0:
print('F', end = "")
elif num % B == 0:
print('B', end = "")
else:
print(num, end = "")
print("")
test_cases.close()
0070デフォルトの名無しさん2014/08/09(土) 21:40:51.15ID:pfgkOg0q
何が原因か告げない例外メッセージと同じですこぶる腹の立つパターンだ
0071デフォルトの名無しさん2014/08/09(土) 21:45:26.46ID:FjFHc6TX
2 2 10 とかFとBが同じときの考慮不足
0072デフォルトの名無しさん2014/08/09(土) 22:58:20.66ID:K1gOBgfb
>>70
CodeEval自体、スコアは表示されるけれども、
どのテストがエラーなのか表示されないので困っていたのです。すみません。

>>71
ありがとうございます。どうやらそのようです。
確かに、2 2 x だと、4の倍数しかFBにならないですね、これ。
if num % F == 0 and num % B == 0:
  print('FB', end="")
でいいのかな…?
0073デフォルトの名無しさん2014/08/09(土) 23:41:03.41ID:K1gOBgfb
>>71
if num % F == 0 and num % B == 0:
  print('FB', end="")
で、無事100点取れました。
ありがとうございました。
0074デフォルトの名無しさん2014/08/10(日) 08:22:41.98ID:frgBbTF3
仕様満たしてないから減点されたのを
どこが原因か判らんとか言いがかりもいいところ
0075デフォルトの名無しさん2014/08/10(日) 10:04:00.43ID:zo9IFsz+
言いがかり?
どっちかって言うと >>74 の方が言いがかり臭いが
0076デフォルトの名無しさん2014/08/14(木) 00:51:32.26ID:ztsop+v9
まあこの手のコード評価サイトってくだらない。
githubのアカウントでも見た方が100倍有意義。
0077デフォルトの名無しさん2014/08/14(木) 00:55:21.75ID:IvD2O8+W
どこのコードが参考になる?
Googleのは綺麗だけど普通のコードだったなぁ
0078デフォルトの名無しさん2014/08/14(木) 01:01:52.85ID:ztsop+v9
ちげーよ個人のスキルを判断するのにって意味だよクソマヌケスポンジ脳みそ野郎
0079デフォルトの名無しさん2014/08/14(木) 01:09:37.28ID:eZDslbUX
[[2, ['D']], [8, ['C']], [12, ['D']], [12, ['H']], [12, ['S']]] を

[[2, ['D']], [8, ['C']], [12, ['D', 'H', 'S']]]


とするにはどうコードを書けばいい?
0080デフォルトの名無しさん2014/08/14(木) 01:41:33.89ID:czQ8Caut
a=[]
str="0123456789"
で
for i in range(10):
a.append(strのi番目の文字を数字として代入)

ってどうやればいいですか・・・
str[i]でi番目の文字を数字としては取り出せないですよね?

0~9までの数字で作られた文字列strのi番目の文字(数字)を
数字として配列a[i]に入れたいのですが
0081デフォルトの名無しさん2014/08/14(木) 01:45:20.01ID:Z2XhePMe
>>80
ドキュメント読む気ねえならせめて自分で一回試してから来いカス
0082デフォルトの名無しさん2014/08/14(木) 02:13:38.80ID:RnqN7Gme
>str="0123456789"
なぜ、文字列を使うの?

最初から、0〜9の数値を入れた配列(数値Array)を使えば?
0083デフォルトの名無しさん2014/08/14(木) 02:20:02.65ID:Sj8LF1t/
>>79
http://ideone.com/8nnDa8

そもそも辞書型で管理したほうがよいのでは
0084デフォルトの名無しさん2014/08/14(木) 02:33:48.17ID:XQOz8skT
>>80
>>> str = "31415926"
>>> a = list(str) # 数字としてリストに入れる
>>> a = [int(s) for s in str] # 数値に変換してリストに入れる
0085デフォルトの名無しさん2014/08/14(木) 02:43:02.34ID:Z2XhePMe
バカどもはいますぐ死ねよ。
str型はイミュータブルなシーケンス。

> str = "31415926"

の後

>>>str[3]

とかしてみろ低能ども。
そしてお前ら10年ROMれ。
0086デフォルトの名無しさん2014/08/14(木) 03:16:36.47ID:9X7JikwT
>>80
文字列を数値にするときはintを使う
http://docs.python.jp/3.3/library/functions.html#int
0087デフォルトの名無しさん2014/08/14(木) 03:17:50.48ID:/Ygxu31/
余裕無い奴がいるな
0088デフォルトの名無しさん2014/08/14(木) 03:19:31.89ID:czQ8Caut
>>85
出来ると仕様を理解して使うとは違うと思うの
試して動いたからおkってのは愚の骨頂じゃない
0089デフォルトの名無しさん2014/08/14(木) 03:56:24.39ID:CQ3J9/oq
a = map(int, '31415927')
0090デフォルトの名無しさん2014/08/14(木) 05:14:58.78ID:CAjda4jb
>>87
ID が正規表現リテラルです。これより異端審問を開始します
0091デフォルトの名無しさん2014/08/14(木) 07:49:41.23ID:smA0xrmN
>>72さん
>>83さんの案でいきました。

>>> from collections import defaultdict
>>> import pprint
>>> dd = defaultdict(list)
>>> LL = [[2, ['D']], [8, ['C']], [12, ['D']], [12, ['H']], [12, ['S']]]
>>> for x in LL:
... key = x[0]
... value = x[1][0]
... dd[key].append(value)
...
>>> pprint.pprint(dd)
defaultdict(<class 'list'>, {8: ['C'], 2: ['D'], 12: ['D', 'H', 'S']})

>>90さん
>>> "str" in dir(__builtins__)
True

str
は、予約されているので、変数名として使用するのを止めましょう。

>>> s = "0123456789"
>>> a = []
>>> s[1]
'1'
>>> for i in range(10):
... n = int(s[i])
... a.append(n)
...
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
0092デフォルトの名無しさん2014/08/14(木) 07:59:40.47ID:smA0xrmN
訂正

>>91
○>>83さん
×>>72さん
0093デフォルトの名無しさん2014/08/14(木) 08:42:33.11ID:CAjda4jb
上で出てるけど添え字使わずに map したり内包表記使ったほうがいい
あと str は予約語なりキーワードではない
0094デフォルトの名無しさん2014/08/14(木) 08:46:22.89ID:JEIgFwEX
LL = [[2, ['D']], [8, ['C']], [12, ['D']], [12, ['H']], [12, ['S']]]
LL2 = [[c, [f for d, e in LL if d==c for f in e]] for c in set(a for a, b in LL)]
print(LL2)

a = []
s = "0123456789"
a[:] = [int(c) for c in s]
print(a)
0095デフォルトの名無しさん2014/08/14(木) 12:06:05.09ID:sq+uQd00
>>79
関数型プログラミング・スタイルで....

http://play.island.ac/codepaste/code?id=1589
0096デフォルトの名無しさん2014/08/14(木) 12:41:41.25ID:sq+uQd00
>>95を訂正
http://play.island.ac/codepaste/code?id=1590
(配列からタプルへの暗黙の型変換を排除した)


あと、せっかく Python にはタプルがあるのだから、
二項関係(=ペア)はタプルで表現したほうが
コードにメリハリがついて読みやすくなると思う

LL = [(2, ['D']), (8, ['C']), (12, ['D']), (12, ['H']), (12, ['S'])]
0097デフォルトの名無しさん2014/08/14(木) 13:20:38.06ID:sq+uQd00
辞書や集合を利用する場合には、解きたい課題の仕様に応じて
適切なデータ構造を選ぶ必要がある
たとえば >>83,94 は辞書または集合を利用しているから、
ペアが連続していなくともキーが一致していれば値をマトメてしまう

>>83 のケース(辞書):
  L = [[12, ['D']], [8, ['C']], [12, ['D']], [12, ['H']], [12, ['S']]]
  # 途中は省略
  print map(list, d.iteritems())
  # => [[12, ['D', 'D', 'H', 'S']], [8, ['C']]]

>>94 のケース(集合):
  LL1 = [[12, ['D']], [8, ['C']], [12, ['D']], [12, ['H']], [12, ['S']]]
  LL1_2 = [[c, [f for d, e in LL if d==c for f in e]] for c in set(a for a, b in LL)]
  print(LL1_2)
  => [[8, ['C']], [12, ['D', 'D', 'H', 'S']]]

もしもキーの一致よりペアの連続性を優先する仕様であれば、>>96 になる

>>96 のケース(配列):
  arr2 = [[2, ['D']], [8, ['C']], [12, ['D']], [12, ['H']], [12, ['S']]]
  print(f(arr2))
  => [[12, ['D']], [8, ['C']], [12, ['D', 'H', 'S']]]

どのコードの振る舞いが適切かは、出題者の >>79 だけが知っている
0098デフォルトの名無しさん2014/08/14(木) 13:44:29.82ID:sq+uQd00
>>97 の末尾にあるコードの一部を訂正(コピペのミス)

X: arr2 = [[2, ['D']], ....]
O: arr2 = [[12, ['D']], ....]
0099デフォルトの名無しさん2014/08/14(木) 19:56:05.14ID:sq+uQd00
もしも仕様が:
 「要素間に順序性がなく、なおかつあるキーにおける要素間で重複を許さない」
であれば、
 「集合を値とする辞書」
というデータ構造が適切になる
この場合、>>96 のコードはずっと単純になる
  http://play.island.ac/codepaste/code?id=1591


なお、さらに短く書こうと(>>94 を参考にして)辞書内包表記に挑戦してみたけど、
型エラーを回避できず、挫折した(Python 2.7 と 3.3 で確認)

>>> {(k, set(v)) for (k, v) in [[1, 'A'], [2, 'B']]}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <setcomp>
TypeError: unhashable type: 'set'

この型エラーの回避方法を知っている人がいれば、教えて欲しい
0100デフォルトの名無しさん2014/08/14(木) 20:14:48.54ID:31aNAkg3
馬鹿には無理
0101デフォルトの名無しさん2014/08/14(木) 20:42:36.28ID:JEIgFwEX
>>99
辞書のキーをkに、値をset(v)にしたいという意味なら
{k:set(v) for k, v in [[1, 'A'], [2, 'B']]}
0102デフォルトの名無しさん2014/08/14(木) 22:18:32.96ID:sq+uQd00
>>101
ありがとうございます
おかげで >>94 を「集合を値とする辞書」に書き換えることができました

LL3 = {c: set([f for d, e in LL if d==c for f in e]) for c in set(a for a, b in LL)}

ただ、内包表記だと入力リストの各要素の反復について更に全要素を反復する(?)ので、
入力リストの大きさに対して処理時間が指数関数的に長くなるように見えます(???)
これを何とか一重の反復にできないか格闘しいぇみたけど、自分では無理でした
まあスクリプト言語で性能うんぬんを考える事が間抜けかもしれませんが....
0103デフォルトの名無しさん2014/08/14(木) 23:28:54.58ID:XQFcvtlU
from itertools import groupby
from operator import itemgetter

d = {k: set(x for _, xs in g for x in xs)
     for k, g in groupby(LL, itemgetter(0))}
0104デフォルトの名無しさん2014/08/15(金) 01:35:13.72ID:y89IBkND
>>100
出た〜馬鹿の一つ覚えw
0105デフォルトの名無しさん2014/08/16(土) 02:12:20.20ID:nQiWsyll
やっぱりおっぱいそんスレにはエロが必要
あは〜ん
0106:デフォルトの名無しさん2014/08/16(土) 20:22:20.73ID:oKz+epnN
なんか映像関係と相性のいいプログラム言語らしいけど
具体的に何ができるの?
0107デフォルトの名無しさん2014/08/16(土) 21:29:41.92ID:nQiWsyll
エロCG作成が可能
0108デフォルトの名無しさん2014/08/16(土) 21:35:13.48ID:hV65QHhV
>>106
できるも何も、Pythonは映像を扱う機能は一切持っていませんぞ
0109デフォルトの名無しさん2014/08/16(土) 22:08:04.08ID:ewaXkA++
エロ動画のクロールしやすい
0110デフォルトの名無しさん2014/08/16(土) 22:38:35.06ID:Ut3Ho2cw
そう、pythonならね
0111デフォルトの名無しさん2014/08/16(土) 22:40:14.86ID:nQiWsyll
使い道が増えたな
0112デフォルトの名無しさん2014/08/17(日) 07:47:50.63ID:1D4ghaF5
>>86
ありがとうございます
0~9とa~fまでの文字で0~15の数字を表し、それで作られた文字列への拡張もいけました

実際にはstrnはランダムで0^9かa^fの文字を任意の数だけ入れますが
strn="0123456789abcdef"
n=16
a=[]

for i in range(len(strn)):
a.append(int(strn[i],base=n))

for i in range(len(strn)):
print(a[i])

>>89,91,93,94
mapも便利そうなので後で仕様を調べて練習してみます
ちょっと難しそうに見えますが、応用範囲が広そうでいいですね
ありがとうございます



後はファイルに記録された8文字の文字列を任意の数読み込んで
それぞれの文字列について平均、最大を出すという操作を作ります
2日位で出来るといいなっ!
0113デフォルトの名無しさん2014/08/17(日) 08:36:55.71ID:S2ZyfJtL
>>112
for文と内包表記の使い方を覚えるともっとシンプルに書けるようになる
strn = "0123456789abcdef"
n = 16
a = [int(s, base=n) for s in strn]

for num in a:
 print(num)
0114デフォルトの名無しさん2014/08/17(日) 12:43:21.18ID:jHvAACNT
PYTHON 2.7 で 2000Hバイトのバイナリデータ(データはすべてFF)を作成したいと思います。
例が示されているサイト等があれば教えていただけないでしょうか。
0115デフォルトの名無しさん2014/08/17(日) 12:50:52.28ID:dhYg7xlG
>>114
open("hoge.bin", "wb").write("\xFF" * 0x2000)
0116デフォルトの名無しさん2014/08/17(日) 14:59:24.06ID:jHvAACNT
>>115
ありがとう。
うまくいきまいした。
0117デフォルトの名無しさん2014/08/17(日) 17:48:26.33ID:1D4ghaF5
>>113
ありがとうございます
for文のそういう書き方や、内包表現を覚えたほうが直感的に書けそうですね
他人のソースがそれで書かれていたら直ぐ読める自信はありませんが、
自分で後で読む用途だとそちらのほうが分かりやすそうです

仕様を理解しつつ具体的に練習して身に付ける方向でやってみようと思います
いつか恩返しが出来るようなれるといいな
0118デフォルトの名無しさん2014/08/18(月) 08:06:33.74ID:51w8WhmP
今時C-styleのforってどこで覚えてくるんだろう
やっぱCか
0119デフォルトの名無しさん2014/08/18(月) 19:28:55.88ID:K5hwgM95
>>113
>for num in a:
> print(num)
print(*a, sep="\n")

ループ処理いらん
0120デフォルトの名無しさん2014/08/18(月) 22:38:58.65ID:HLTZAqws
>>> l = ["a", "b" "c"]
>>> l
>>> ['a', 'bc']
なんでこうなるんだろ
ふつうにエラーにしたほうがいいと思うんだけど
なんかメリットあるんだろうか
0121デフォルトの名無しさん2014/08/18(月) 23:01:35.09ID:K5hwgM95
>>120
文字列リテラルの仕様
>単式の一部であり間に空白のみを含む文字列リテラルは、一つの文字列リテラルに暗黙に変換されます。
http://docs.python.jp/3.4/library/stdtypes.html#text-sequence-type-str
>>> "b""c"
'bc'

メリットは何だろ。文字列結合するのにそのまま並べられる?
0122デフォルトの名無しさん2014/08/18(月) 23:04:05.12ID:7X6VrPC7
pack の引数のコメント書くのとかに使える
あと変数名 l はあんまりよくない
0123デフォルトの名無しさん2014/08/18(月) 23:04:33.51ID:FhzY8b4Z
文字列リテラルを並べると一まとめになるのはC言語系の仕様だろ
0124デフォルトの名無しさん2014/08/18(月) 23:07:27.74ID:yNFe71fP
言語リファレンスの方が
ttp://docs.python.jp/3/reference/lexical_analysis.html#string-literal-concatenation
主になんがーい文字用じゃないかね
0125デフォルトの名無しさん2014/08/18(月) 23:10:21.53ID:mqTO4sep
PEP8に頑なに従おうとしたときすごく助かるよ。
0126デフォルトの名無しさん2014/08/20(水) 12:51:32.19ID:T9kvMX30
なんてこったずっと + 書いてたわ
("This" +
"is a very long line")
0127デフォルトの名無しさん2014/08/20(水) 13:02:45.35ID:GuTaDa5L
"This" \
"is a very long line"
0128デフォルトの名無しさん2014/08/20(水) 16:27:20.44ID:SAxc93tu
Thisis a very long line
0129デフォルトの名無しさん2014/08/20(水) 19:09:26.04ID:FiV4cMVv
横80文字なんて、ワイドディスプレイが普及した今の時代に守る必要はない
あれはパンチカードやキャラクタディスプレイ時代の習慣だ
頻繁に改行することで見にくくなったりエンバグするリスクの方が高い
0130デフォルトの名無しさん2014/08/20(水) 19:11:44.34ID:vOLIf7/C
まあ普通に書けば80桁を越える事なんか滅多にない訳だが
0131デフォルトの名無しさん2014/08/20(水) 19:31:39.62ID:PK2Z8X8/
小さめのノートでターミナル横二分割すると80文字でギリぐらい
0132デフォルトの名無しさん2014/08/20(水) 20:44:06.63ID:FiV4cMVv
>>130
自分はprintで超えまくるよ
Python3になって、printにカッコを使うようになったのと
format()を併用するようになったことが実に痛い
0133デフォルトの名無しさん2014/08/20(水) 20:57:52.89ID:5yBlZ/IM
内包表記はよく80越えするな
0134デフォルトの名無しさん2014/08/21(木) 21:04:40.79ID:hkentYzf
内包表記も print の括弧もその中で改行できるから逆にめったに超えない
0135デフォルトの名無しさん2014/08/21(木) 21:32:17.51ID:EEmj9GE5
そうだよな、改行した方が読みやすい。
わざわざ一行で書くとか何の苦行だよ?
0136デフォルトの名無しさん2014/08/21(木) 21:39:03.62ID:MhWq0pC7
俺の場合、改行するとそこで思考が途切れて
コードが読めなくなるんだよ
printで文字列を二行に分けて、なおかつ後ろに
formatが付いていたりするともう大変で、視線が
上と下を行ったり来たりしているうちに発狂する
0137デフォルトの名無しさん2014/08/22(金) 00:17:18.47ID:8tYB1M2a
今時のモニタだと、横に400-500文字表示できるから、
短くてもバランスが悪いんだよね
0138デフォルトの名無しさん2014/08/22(金) 08:34:47.26ID:FzGWd/ot
頑なにコーデイングルール守ろうとしてイライラしてる奴を眺めるのが最近の趣味
0139デフォルトの名無しさん2014/08/23(土) 12:12:00.39ID:G8fmeh+A
Python初心者です。
reモジュールはスレッドセーフですか?
複数のスレッドから同時に正規表現を扱いたいのでスレッドセーフでないと困っちゃいます
0140デフォルトの名無しさん2014/08/23(土) 12:41:33.64ID:7Oq9lst2
こういうファイルがあるとして(さしすせその後も改行があります)
str1.txt
あいうえお
かきくけこ
さしすせそ


次のように文字列をlist_strにリストとして格納します
list_str=[]

f=open()
list_str=f.readlines()
f.close()

で、改行込みの文字列のリストがlist_strに代入されますが
そこから改行文字を取り除きたいです
どうやるのが尤も一般的でしょうか?
0141デフォルトの名無しさん2014/08/23(土) 13:01:38.90ID:FMBFCiJo
>>140
with open("str1.txt", "r", encoding="utf-8") as f:
list_str = [line.strip() for line in f.readlines()]
print(list_str)

python3だとこんな感じ
0142デフォルトの名無しさん2014/08/23(土) 13:15:42.30ID:+i5yzvna
.strip() だと先頭/末尾の空白やタブまで削除されてしまうから
.rstrip("\r\n") の方がいいよ
0143デフォルトの名無しさん2014/08/23(土) 16:30:53.87ID:gEc2W+i3
replace でいいだろ
0144デフォルトの名無しさん2014/08/23(土) 19:15:01.22ID:7Oq9lst2
>>140-141
ありがとうございます
大分酷い書き方になっていると思いますが、思ったような動作になりました
洗練された表現は後で周辺も調べつつ取り入れて見ようと思います
また、ここがおかしいという指摘あれば、よろしければご教授下さいm(__)m

list_str = []

f = open("str1.txt")
list_str = f.readlines()
f.close()
print(list_str)

for i in range(3):
line = list_str[i].strip()
# line = list_str[i].rstrip("\r\n")
list_str[i] = line
print(list_str)

all_str = "".join(list_str)
print(all_str)

>>>
['あいうえお\n', 'かきくけこ\n', 'さしすせそ\n']
['あいうえお', 'かきくけこ', 'さしすせそ']
あいうえおかきくけこさしすせそ
01451392014/08/23(土) 19:24:32.33ID:3qnNklS6
誰かわかる人いませんか?
0146デフォルトの名無しさん2014/08/23(土) 20:14:09.61ID:+i5yzvna
>>145
わざわざスレッドセーフするためのグローバルインタプリタロックだし
JavaScriptみたいにグローバルな正規表現オブジェクトを使い回す訳でもないし
大丈夫でしょ

グローバルインタプリタロックがあるから処理時間短縮目的ならマルチプロセス化する必要あるよ
0147デフォルトの名無しさん2014/08/23(土) 20:59:56.96ID:FMBFCiJo
>>144
f = open("str1.txt")
list_str = f.readlines()
f.close()
は
with open("str1.txt") as f:
  list_str = f.readlines()
にするといちいちcloseよばなくてすむから楽

あと,テキストをリストに移すときは普通は一気にやる
list_str = []
with open("str1.txt") as f:
  for line in f.readlines():
    list_str.append(line.strip())
print(list_str)
0148デフォルトの名無しさん2014/08/23(土) 21:06:16.75ID:i5J5SJBK
>>142,144
Pythonは>>144ででてるようにテキスト読み込み時に改行文字を\nに変換するから
.strip("\n") で良い。
0149デフォルトの名無しさん2014/08/23(土) 21:08:47.47ID:i5J5SJBK
>>147
readlines()でいったん全部読み込んでからそれを for でまわすとか、
for でまわしてリストに append とかバッドノウハウばっか教えんなよ。
0150デフォルトの名無しさん2014/08/23(土) 21:16:32.39ID:Hu2+AkgU
どこがバッドノウハウなのかね
forで回して条件に合う物をリストにappendって
Pyhtonの定番中の定番処理だぞ
0151デフォルトの名無しさん2014/08/23(土) 21:37:48.68ID:+i5yzvna
すぐ加工して破棄するんだし readlines() で全部メモリ上に保持する必要はないってことでしょ
append も、少しずつ加えるよりイテレータや内包表記で一気にリストにする方がメモリ効率がいい

with open("str1.txt") as f:
 list_str = [line.rstrip("\n") for line in f]
0152デフォルトの名無しさん2014/08/23(土) 22:02:31.40ID:FMBFCiJo
リスト内包は>>141で書いたけど
>>144に"洗練された表現は後で周辺も調べつつ取り入れて見ようと思います"ってあるから
本人の書いたコードになるべくあわせて修正した
0153デフォルトの名無しさん2014/08/23(土) 22:04:58.66ID:1z1AuVul
>>149
そんなもん規模次第だろ
数十行程度の設定ファイルとかなら、メモリー効率とか実行速度を気にするレベルじゃないだろうし
0154デフォルトの名無しさん2014/08/23(土) 22:15:34.69ID:3qnNklS6
>>151の方が読みやすいし短いし効率もいいだろ
規模の問題ですらない
0155デフォルトの名無しさん2014/08/23(土) 22:26:23.33ID:Hu2+AkgU
いやいや
内包表記は読みづらいですから
0156デフォルトの名無しさん2014/08/23(土) 22:30:44.45ID:NSY3QuJK
戦の予感
0157デフォルトの名無しさん2014/08/23(土) 22:33:30.14ID:PmTjLBQU
それほど読みづらくはないほうだと思う
0158デフォルトの名無しさん2014/08/23(土) 22:36:09.93ID:Hu2+AkgU
何にでも速度・効率をふりかざし
コードを見れば脊椎反射で批評・添削を加えたがる輩は
それが暴力に近いことだと自覚して欲しい
0159デフォルトの名無しさん2014/08/23(土) 22:38:18.68ID:1z1AuVul
>>154
読みやすいかどうかは人によるし、規模が小さいならどっちでも好きな方でいいだろ
0160デフォルトの名無しさん2014/08/23(土) 22:48:29.19ID:+i5yzvna
読み易さはともかく
readlines() で作られるリストと、加工結果を入れるリストとで、
一時的に本来必要な量の2倍メモリ消費してしまうことには気を付けといた方がいいね
ここ最近、巨大なテキストファイルの加工にPython使ってるけど
そろそろ処理終わったかな〜と見に行くとメモリ不足で止まってたりするw
0161デフォルトの名無しさん2014/08/23(土) 22:48:36.35ID:gEc2W+i3
メモリ云々抜かすなら yield 使え
0162デフォルトの名無しさん2014/08/23(土) 22:50:08.39ID:3qnNklS6
内包表記の方が余計な変数も使わないし簡潔で読みやすいよ
0163デフォルトの名無しさん2014/08/23(土) 22:50:15.21ID:Jwg/Lhcu
>>151 くらいなら一目で理解できるけど、
よほど慣れた人を除けば >>94 や >>102 は
無理ゲーな人が大半ではないかと思われ
0164デフォルトの名無しさん2014/08/23(土) 23:30:51.50ID:XzPg74sm
内包表記が適さない場面なら
with open('str1.txt') as f:list_str = map(str.rstrip,f)
で良いじゃん?リストに入れるのが目的ならだけどね

規模が小さかろうとシステムリソースは有限だし
スケーリング可能な最適をチョイスをするのが基本だと思うがね
動けばいいなんて処理を理解しないままもまたバグの元だが
0165デフォルトの名無しさん2014/08/23(土) 23:36:23.23ID:6csT3QKU
>>163
慣れた人というより、もはやサヴァン症候群なんじゃないかと思うレベル。
0166デフォルトの名無しさん2014/08/23(土) 23:44:24.92ID:3qnNklS6
この程度の表記で大騒ぎしすぎだろ
メタプログラミングならもっとヤバいのがいっぱいあるのに
0167デフォルトの名無しさん2014/08/23(土) 23:48:37.89ID:Hu2+AkgU
>>164
話の流れ見えてないだろ
頼まれたわけでもないのに、人のコードに横から口を挟んで
速度・効率のチューニングを始めるのは自重しろと言っているのだよ
0168デフォルトの名無しさん2014/08/23(土) 23:57:17.07ID:Dp/sG2ok
今の流れから言うと(ちなみに)こうするとええでみたいなのはあってもいいんじゃとはおもう
0169デフォルトの名無しさん2014/08/24(日) 00:05:43.11ID:NdITZsIB
>>167
彼のはただの突っ込みあるいは些細な齟齬に見えるが?
話の流れではなく貴方が自分の主張で過剰反応してるだけでしょう?
悪いけどそんな下らんことを議論するつもりはない
0170デフォルトの名無しさん2014/08/24(日) 00:11:25.82ID:frySUXyC
流れは>>144の
> また、ここがおかしいという指摘あれば、よろしければご教授下さいm(__)m
からきていると思う
0171デフォルトの名無しさん2014/08/24(日) 00:17:22.57ID:1zGm5FNX
>>167
速度効率の問題というより readlines が余計
f はイテレータ
0172デフォルトの名無しさん2014/08/24(日) 00:17:52.28ID:TeY476kZ
>>166
メタプログラミングって読みにくいコードを書く事じゃないぞ
0173デフォルトの名無しさん2014/08/24(日) 00:56:14.63ID:jWy1bnP0
自己満コードのことですよね分かります
0174デフォルトの名無しさん2014/08/24(日) 01:13:41.67ID:0MtXF8e+
多少冗長でもだれが読んでも一発でわかるコードが最良なんだよ
ド素人が多すぎる
0175デフォルトの名無しさん2014/08/24(日) 01:29:48.23ID:+Pte+GGf
そろそろpass又は馬鹿には無理が現れるころ
0176デフォルトの名無しさん2014/08/24(日) 01:53:06.56ID:Mo/xSCgr
>>174
自分の知識がないのを「多少冗長でも誰が読んでもわかる方が良い」などとトンチンカンな
エスクキューズにするコーダーは100%クズ
0177デフォルトの名無しさん2014/08/24(日) 02:05:18.29ID:VbHcfS42
早速ド素人が釣れたようだなw
0178デフォルトの名無しさん2014/08/24(日) 02:06:58.64ID:jlCuRdJh
初心者の馬鹿が発狂しているな
0179デフォルトの名無しさん2014/08/24(日) 02:10:53.57ID:Mo/xSCgr
>>150
いや、>>147みたいな単純なappendはバッドノウハウ中のバッドノウハウ。
自分が使うのは勝手だが、人にすすめていいコードじゃない。
私バカですと言ってるようなもの。

内包表記がわかりにくい云々とか言ってるのは自分が頭悪いので言語の仕様を使い切れません、
と言ってるのと同じなので、それを人にさらして良い話ではない。
私バカですと言ってるようなもの。

規模の大小とコードの効率や質とは無関係。
人様に見せないでてめえの中だけで自己満足できればいいなら好きにすれば良い話。
でもそれを人前で言うな。
私バカですと言ってるようなもの。

>>140 はその程度の知識はあってやってそうなのに対し、
>>147 が上から目線で>>140よりバカで無駄だらけなコードをひけらかしてるので痛さが際立つ。
0180デフォルトの名無しさん2014/08/24(日) 04:05:04.08ID:jlCuRdJh
結論:このスレは馬鹿の集まり
0181デフォルトの名無しさん2014/08/24(日) 04:38:47.54ID:Mxca/0uN
>>179
単純なappendをバッドノウハウと主張する根拠は?
根拠を述べ、それを皆が納得してくれないと
逆に君がバカだと思われるぜ
0182デフォルトの名無しさん2014/08/24(日) 04:44:44.19ID:jlCuRdJh
はい論破
0183デフォルトの名無しさん2014/08/24(日) 05:28:05.91ID:fB1dx/82
ここ、超初心者用のスレだから、効率まで追求しなくていいと思う。
0184デフォルトの名無しさん2014/08/24(日) 05:58:46.88ID:Mxca/0uN
全くだ
スクリプト言語はお手軽さが命
そもそも内包表記は、rubyに毒されたワンライナー厨の
オナニー用に後から追加された機能だろ?
Pythonの公式ドキュメントにも、内包表記はわかりづらい
うんぬんという記述があったはず
0185デフォルトの名無しさん2014/08/24(日) 08:06:45.59ID:TeY476kZ
もしかして一行で書いた方が効率がいいとか思ってるやついる?
0186デフォルトの名無しさん2014/08/24(日) 08:08:25.35ID:3Y+Mzxe1
>>179
> 規模の大小とコードの効率や質とは無関係。

データの大小で処理方法を変えることは普通にあるだろ。

> 私バカですと言ってるようなもの。

ブーメラン乙 (w
0187デフォルトの名無しさん2014/08/24(日) 08:57:04.93ID:1zGm5FNX
内包表記アレルギーもこまったもんだけど
ループ内でリストに append はバッドノウハウとか言い出すのもなんだな
0188デフォルトの名無しさん2014/08/24(日) 09:20:30.22ID:jWy1bnP0
何を生み出すこともない戦がまだ続いてます
こんなことやるくらいならオナニーでもしていた方がいいでしょうね
0189デフォルトの名無しさん2014/08/24(日) 10:07:03.45ID:2j22PZGE
言い出すもクソも、そもそもバッドノウハウとは真逆のごく自然なやり方だし
0190デフォルトの名無しさん2014/08/24(日) 10:08:29.80ID:gu+/Plpk
通常は人に見せる事も目的に持ちたいけど
思った事を直ぐ記述だと、ある程度の内包表記をしたほうが直感的に書けるだろうし
後からも分かりやすい気がするし・・・

ってよく分からなくなる
ここまでは内包表記をしましょうみたいなコンセンサスがあるといいなって
ある程度以上のレベルになればこちらの表記を採用みたいな
初心者もここまでの内包表記は目指したほうが後から力になりやすいって感じで

逆に内包表記しないほうがいいって感じのものを挙げたほうが良さそうな気もしてきたw
0191デフォルトの名無しさん2014/08/24(日) 10:17:31.08ID:2j22PZGE
内包表記ってループを一行で書いただけだぞ?
初心者だから分からないんじゃない。
読みにくいから分かりにくいんだよ。
0192デフォルトの名無しさん2014/08/24(日) 11:04:46.88ID:87IKCXeE
例えば 0〜99 の数値のリストを作る
x = range(100)
をforで作る人は多分いない。
それはrangeで作られるリストが容易に想像できるから。

複雑な内包表現でもそのようなもの(例えば言葉で説明できるもの)ならループよりも可読性があると思う。
ただし、複雑過ぎると動作を変更しようとしたときに面倒臭い。
0193デフォルトの名無しさん2014/08/24(日) 11:21:39.10ID:gu+/Plpk
>>191

>>144の場合だと
for i in range(3):
line = list_str[i].strip()
list_str[i] = line

>>151>>160
>>144の例は読み込むのが3行だからどっちでもいいとは思うんだけど
こういう感じのファイルからの読み込みだと大量のデータを処理する目的がある場合が十分考えられる

>>151
f = open("str1.txt")
list_str=[line.rstrip("\n") for line in f]
f.close()

3行なのを記録したり、調べないでもいいし、ファイルの性質を分かっていれば読みにくいことはないし、
書くくなら多分こちらを書くかなって気がする
他人が書いたものを読むのも、内包表記を知っている方だと、こちらのほうが読みやすい気がする

ファイルからの一行ごとの処理がこの内包表記で出来るというのは多分覚えないといけないでしょうけど
というかファイルオブジェクトがファイルが一行ごとを要素として持つリストで認識? しているって感じで理解したほうがいいのかな?
0194デフォルトの名無しさん2014/08/24(日) 11:50:15.24ID:jWy1bnP0
お前らのソースコードなんか読まれないから可読性とかイチイチ語らなくていいぞ
それでも語りたいならgithubのアカウント晒せよ
それでお前の語る可読性がどれだけ高尚なものか評価してやる
テストがまったくないとか言ったら笑うけどな
0195デフォルトの名無しさん2014/08/24(日) 11:51:26.70ID:jWy1bnP0
さぞ徹底的に実践されていることだろうな?
それとも机上の空論で自らのコードはずぼらとか?
偉そうな方はどちらに当てはまるかな
0196デフォルトの名無しさん2014/08/24(日) 12:39:33.97ID:lc4tmy8G
>>194
なんか糞コードしかかけなそう
0197デフォルトの名無しさん2014/08/24(日) 12:41:09.68ID:EYMdVqe7
西アフリカで、アウトブレイクした潜伏期間延長型エボラの死者・罹患者の数を散布図にし近似曲線を出してみたら
片対数グラフで直線だから既に指数関数的増加だった

2014年に、西アフリカでアウトブレイクした潜伏期間延長型エボラの死者は、2014年8月半ばで1000人。←今ココ
2014年12月上旬で1万人。
この時点で世界規模で空路シャットダウン開始、世界経済大混乱

2015年5月で10万人。
2015年9月で100万人。
この時点で、第二次世界大恐慌発生

2015年大晦日で1000万人。

ちなみに
http://ja.wikipedia.org/wiki/2014%E5%B9%B4%E3%81%AE%E8%A5%BF%E3%82%A2%E3%83%95%E3%83%AA%E3%82%AB%E3%82%A8%E3%83%9C%E3%83%A9%E5%A4%A7%E6%B5%81%E8%A1%8C
:カナダ保健省のサイトでは体内に数個のエボラウィルスエアロゾルが侵入しただけでも発症するとしている
:ハマダラカが、吸血したての人の新鮮血を媒介しているという学説が浮上している

エボラ出血熱は蚊やアブに刺されただけで感染する。

:「この地域には内戦、政府による搾取、テロが長い間続いており、それによって生まれた恐怖、貧困、猜疑心などがある。エボラは耐え難い騒音に付け加えられた一つのざわめきに過ぎない」
現地では

や る 気 は 皆 無
0198デフォルトの名無しさん2014/08/24(日) 12:48:28.63ID:+Bp9t+G+
いきなりテストがどうのこうのとか、分裂症の兆候が見られますね
0199デフォルトの名無しさん2014/08/24(日) 13:24:17.80ID:frySUXyC
>>193
どこでcloseしてるか探さないといけない書き方より、with使う方が好みだなあ
withのインデント範囲が、ファイルの開いてる範囲だと直感的に分かるから

テキストエディタの色分け表示された環境で見れば、短い内包表記なら気にならなくなるよ
0200デフォルトの名無しさん2014/08/24(日) 14:00:30.54ID:gu+/Plpk
>>194
人に見せないまでも自分に対する可読性もあると思うの
直感的に書いて、尚且つ10年後も自分で読みやすいスクリプトを書きたいじゃない
散文的に書いたものが何かの拍子に必要になる可能性もあるし

というかこれには関係ないけど昔別言語の自分の書いた変態ソースが読みにくくて大分めんどくさいです
ドキュメント位作っておけばよかった

>>199
他の言語から移るって感じの時に
withだと内包表記と共に2つの理解が必要だとしんどいかなって思ってばらしてみました
Pythonを使い慣れている方なら普通にwithを使うでしょうね
0201デフォルトの名無しさん2014/08/24(日) 14:08:01.22ID:gDuWOCL6
withと同等の構文は大抵のメジャー言語に備わってるよw
0202デフォルトの名無しさん2014/08/24(日) 14:27:30.36ID:Mxca/0uN
withで聞きたいことがあったんだった
入力ファイルと出力ファイルを一つずつ開き
読み書きを全て一つのブロック内で行う場合、これでいいのかな?
動いてはいるのだけど、openがネストになるのが気持ち悪い

with open(...) as infile:
  with open(...) as outfile:
    # 以下、読んだり書いたりの処理
0203デフォルトの名無しさん2014/08/24(日) 14:48:42.01ID:frySUXyC
こんな風にも書けるよ

with open(...) as infile, \
   open(...) as outfile:
  # 以下、読んだり書いたりの処理
0204デフォルトの名無しさん2014/08/24(日) 14:54:05.63ID:jlCuRdJh
ゴミコードです
0205デフォルトの名無しさん2014/08/24(日) 15:00:05.12ID:gGOWG3Gv
>>202
with open(...) as infile, open(...) as outfile:
 # 以下、読んだり書いたりの処理
2.7から普通にコンマで繋げられるよ
3.3からでたくさんある場合はcontextlib.ExitStackが使える
2.6以下ならcontextlib.nestedでできる
0206デフォルトの名無しさん2014/08/24(日) 18:44:45.65ID:Mxca/0uN
>>203,205
サンクス
withを使ったファイルアクセスは頻繁に使うので
スッキリ書けると助かる
0207デフォルトの名無しさん2014/08/25(月) 02:10:28.08ID:OTL7uAT+
>>149 >>151 >>160 >>171
readlinesって一旦全部メモリに読んでるの?
最近のpythonだとgeneratorにしてくれてるんじゃなくて?

>>161
だよね
0208デフォルトの名無しさん2014/08/25(月) 02:33:00.21ID:WeZbZEp1
>>207
Pythonのドキュメントをちゃんと読めばわかる話なんだが。

「リストを返す」というのはメモリに全部読み込んで返してますということ。

wiith ... as f なら f はイテレータになってる。

イテレータを返すというのはその時点ではまだ読み込んでませんよということ。

ジェネレータはイテレータのシンタックスシュガー。
内包表記でかくとややこしくなるところで使うのが yield を使うジェネレータ。
0209デフォルトの名無しさん2014/08/25(月) 02:39:43.37ID:r8v+sX3h
なんか滅茶苦茶だな
0210デフォルトの名無しさん2014/08/25(月) 08:54:52.76ID:C6MCmCjo
>>207
自分 >>171 なんだけどメモリがどうとかなん一言も言ってない
単に(>>147 後段の)readlines() が余計だというだけ
0211デフォルトの名無しさん2014/08/25(月) 09:39:28.38ID:LIV+GZ8D
一言も言ってないとかそんなことはどうでもいいんだよ
俺には聞こえたんだ文句あっかクソが
0212デフォルトの名無しさん2014/08/25(月) 20:01:33.97ID:OTL7uAT+
漏れも聞こえた気がする
0213デフォルトの名無しさん2014/08/26(火) 00:23:41.72ID:cOpcHFf6
>>210
速度もメモリーも気にしないなら readlines あってもいいじゃん
0214デフォルトの名無しさん2014/08/27(水) 18:23:29.22ID:kQryo2X9
readlinesを使う場合が思いつかない罠
\n付きのデータが欲しい時は使うのかなあ
0215デフォルトの名無しさん2014/08/27(水) 18:35:30.33ID:cWbvRQEv
使うとしたら、どうしても最終行→先頭行の順で処理したい時くらいかなあ
0216デフォルトの名無しさん2014/08/27(水) 19:35:30.52ID:9+bGMQe/
csvとかで行の先頭に日時が書いてあって、昇順降順を逆にして表示したい時とか、
先頭行に行数を明記したい時とかかな?
0217デフォルトの名無しさん2014/08/27(水) 19:36:55.50ID:9+bGMQe/
あと、処理が全体の何%進んでます
って表示する時かな?
0218デフォルトの名無しさん2014/08/27(水) 20:34:24.19ID:W7LoG7Mi
超初歩的な質問をいくつかさせてもらいます。
bool_one = False and True
この「and」とはどういう意味を持つのでしょうか?
「!=」と「+=」の意味は同じですか?
0219デフォルトの名無しさん2014/08/27(水) 20:57:36.11ID:36wAJh8p
>>218
くだすれPython(超初心者用) その17
http://peace.2ch.net/test/read.cgi/tech/1365323116/937-938
0220デフォルトの名無しさん2014/08/27(水) 21:11:58.77ID:F5daRA4V
>>218
ちょっとよくわかりません
0221デフォルトの名無しさん2014/08/27(水) 21:17:34.91ID:lz8X5B5x
Jack and Betty
Bonnie and Clyde
みたいな感じじゃね?
0222デフォルトの名無しさん2014/08/27(水) 21:29:34.59ID:W7LoG7Mi
>>219
なるほど、良く分かりました!ありがとうございます。
ちなみにこのコードは、codecademyのレッスン中にでてきます。
0223デフォルトの名無しさん2014/08/27(水) 21:45:04.28ID:l9xcBY8F
>>218
andの左にある式がFalseと評価できるなら左の式を返す、逆にTrueと評価できるならandの右にある式を返す
>>> [] and True
[]
>>> 1.0 - 1.0 and 3.14
0.0
>>> -1 and 2
2
>>> 'hello' and 'world'
'world'
0224デフォルトの名無しさん2014/08/28(木) 02:33:42.69ID:8lkzYc52
codecademy クラスの所の順番(基本と応用)おかしくない?
0225デフォルトの名無しさん2014/08/28(木) 06:43:05.78ID:3Gu0DZv8
>>223
うーん、これは初心者には難解だなあ
ifで条件つなぎに使うやつと毛色が違うよね
でもこれを使うと、ラムダ式などifを使えない場所に
条件分岐を仕込めそうな感じがするので、学ぶ価値はありそうなんだよな
0226デフォルトの名無しさん2014/08/28(木) 06:55:05.71ID:DXb3g9Xw
>ifで条件つなぎに使うやつと毛色が違うよね
毛色が違う・・・?

>でもこれを使うと、ラムダ式などifを使えない場所に
三項演算子はステートメントじゃなくて演算子だから使える
0227デフォルトの名無しさん2014/08/28(木) 07:19:23.35ID:3Gu0DZv8
>>226
ifの条件式に使うandとこのandは働きが違う感じがしません?
どこがどうとは言えないのだけど
0228デフォルトの名無しさん2014/08/28(木) 07:36:36.16ID:NvaMglSs
>>227
論理演算子はどこで使おうが短絡演算で評価対象を返すよ
この特性は三項演算子っぽく使えなくも無いが、それとしては不完全なので
返す値をちょっとだけ変えたいくらいの時には便利

if用の論理演算子なんてものはない、論理演算子があり、if文があり、それらが連携してry
0229デフォルトの名無しさん2014/08/28(木) 08:25:08.74ID:C6oDC4Qo
人減ってレベル下ったな
0230デフォルトの名無しさん2014/08/28(木) 12:38:56.86ID:NYfr88ea
>>227
if文やwhile文などの条件部分はbool型の値じゃなくてもエラーにならない
False、None、数値のゼロ、空のシーケンス(文字列やリスト)などが偽と見なされる

>>> if [] and True: print(1)
は[] and Trueのブール演算で返った[]が偽と見なされるのでprint(1)は実行されない
0231デフォルトの名無しさん2014/08/28(木) 18:43:17.03ID:+ATeOtQu
>>227
ifの条件式と全く同じ。
ただ、条件式以外でandやorを使うのは、Pythonに三項演算が無かった頃のテクニックで
今そんなの使うのはCode Golfするときくらいだな。
0232デフォルトの名無しさん2014/08/28(木) 19:10:09.62ID:u3Kwqg++
x = a or b or c or d or default_value
みたいなのはよく使うけどなあ
0233デフォルトの名無しさん2014/08/28(木) 19:54:13.35ID:n/glzhXg
優柔不断すぎるだろ
0234デフォルトの名無しさん2014/08/28(木) 20:11:27.58ID:u3Kwqg++
優柔不断かなあ。ifで書くより分かりやすいと思うけど

if a:
 x = a
elif b:
 x = b
elif c:
 x = c
elif d:
 x = d
else:
 x = default_value
0235デフォルトの名無しさん2014/08/28(木) 20:18:39.82ID:1NG60ApY
orでつなげる方が見やすいとは思うけど、if使う方が直感的で読みやすいかな。
三項演算も長くなるとキモいし一長一短。
0236デフォルトの名無しさん2014/08/28(木) 20:20:45.90ID:TSExhEQp
re.findall() みたいに必ずリストで返す奴でのシンプルな要素取りみたいな用途ではよく使うかな。

m = re.findall(pattern, s)
m = m and m[0]

if で2行にわたって書くとか無駄でイヤ。
0237デフォルトの名無しさん2014/08/28(木) 21:24:11.38ID:CCJAHAKH
デフォルトな値設定に使うなあ
def __init__(self, a=None):
 self.a = a or {}
0238デフォルトの名無しさん2014/08/29(金) 01:58:45.79ID:idGYnHkN
>>236
コードによるけど、結局mにちゃんと値が入ってるかどうかのif的処理が必要になるんじゃないかね。

>>237
> def __init__(self, a=None):
>  self.a = a or {}

こんなクソコードを2chで晒してんじゃねえ。
クソだってわからないんだとしたら、そんなおまえがクソです。
0239デフォルトの名無しさん2014/08/29(金) 02:45:03.76ID:SC5ypxkr
>>238
>>237は何度か見たことある書き方だけど問題があるのなら具体的に指摘してくれ。
0240デフォルトの名無しさん2014/08/29(金) 05:17:47.45ID:C06ZUAqI
def __init__(self, a={}):
 self.a = a

とか書くと意味が変わるんだよな
インスタンス生成のタイミングが一回になるから云々
0241デフォルトの名無しさん2014/08/29(金) 06:19:30.41ID:EluQu91K
>>239
a が None のとき {} にするつもりで記述したかもしれないけど
a に 0 [ ] '' false などを指定した場合も self.a = {} になってしまうから
思わぬバグを生む原因になったりするかもしれない
そのクラスの使用者側からすると、確実に 0 を指定したのになぜか思い通りに動いてくれない・・・みたいなバグ

計算結果や返値の型が明確なものに使うのはいいけど
引数のように何が渡されるか分からないものには慎重に使うべきなんだと思う
0242デフォルトの名無しさん2014/08/29(金) 09:07:46.34ID:H83Cnhn6
>>241
偽になる値を有効なものとして受け取るなら>>237はバグだけど、例えばdictを期待してるなら問題ないよね

>引数のように何が渡されるか分からないものには慎重に使うべきなんだと思う
これが違和感ある
引数にも何か期待してる型があるのでは
それを無視してバグるのは使用者の責任だと思う

偽になる値を受け取るときは「a = {} if a is None else a」と書く必要があるけど、
dictを期待してるときは「a = a or {}」と書けて便利だねってことでしょうよ
0243デフォルトの名無しさん2014/08/29(金) 09:17:43.83ID:QcgTGGrU
dict期待してるならNoneは例外吐くべき
0244デフォルトの名無しさん2014/08/29(金) 09:27:48.96ID:tA6eYT/j
asaert
0245デフォルトの名無しさん2014/08/29(金) 09:29:02.29ID:tA6eYT/j
typo つД`)
0246デフォルトの名無しさん2014/08/29(金) 11:23:22.37ID:mu02bUZX
>>237の用途なら以下の通りで十分。
def __init__(self, a={}):
 self.a = a

あと、引数に期待するtypeがある時に、
有効な初期値があるならその値で良いし、
そうでないなら、期待するtypeの偽を初期値にして欲しい。

def __init__(self, d={}, L=[], n=0, flt=0.0, st=set(), tup=()):
pass

これなら、grepで__init__を検索すれば、
dはdict, Lはlist, nは整数, fltは少数, stはsetを期待しているって明瞭でしょう?
0247デフォルトの名無しさん2014/08/29(金) 16:15:28.98ID:VYyiJktz
>>246
http://ideone.com/FJthAF
こういう事になるからその書き方はあまりおすすめできないが
0248デフォルトの名無しさん2014/08/29(金) 18:14:53.18ID:6XulYCBt
【翻訳】Python 2.7.x と 3.x の決定的な違いを例とともに | POSTD
 http://postd.cc/the-key-differences-between-python-2-7-x-and-python-3-x-with-examples/
0249デフォルトの名無しさん2014/08/29(金) 18:40:46.68ID:uMORzI9c
Python3はまだ早い
あと2年待て
0250デフォルトの名無しさん2014/08/29(金) 18:47:25.87ID:caa7zuwv
Mac に載ってるのが 3 系になったら本気出す
0251デフォルトの名無しさん2014/08/29(金) 20:04:08.50ID:EluQu91K
>>242
中途半端に動作してしまうと何所に原因があるのか見つけづらい場合もあるし
コメントに注意書きするよりチェック処理の方が簡潔かもしれないね

def __init__(self, a=None):
 assert isinstance(a, (dict, type(None)))
 self.a = a or {}
0252デフォルトの名無しさん2014/08/29(金) 20:16:41.71ID:/xquer/h
>>250
インストーラ用意されてても駄目なのか・・
https://www.python.org/downloads/release/python-341/
0253デフォルトの名無しさん2014/08/29(金) 21:12:43.50ID:QcgTGGrU
assertはあくまでデバッグ用だからユーザーに対してはちゃんとTypeErrorなり吐きましょう
0254デフォルトの名無しさん2014/08/29(金) 23:47:41.71ID:mu02bUZX
>>247
y.a と x.a が共通になるとは思いませんでした。
勉強になりました。

という事で、こんな風にしておくのが無難ですか?

class Hoge(object):
def __init__(self, a={}):
self.a = a or {}

if __name__ == "__main__":
x = Hoge()
y = Hoge()
x.a[0] = 1
y.a[1] = 2

print(y.a)
0255デフォルトの名無しさん2014/08/29(金) 23:49:30.39ID:NQcdY+S7
細かいけど吐くのはエラーログ、例外は投げるもんだろ?
0256デフォルトの名無しさん2014/08/30(土) 02:08:22.27ID:9i4rki/q
本題からずれるけど、クラスや関数の引数にミュータブルなオブジェクトを渡して、クラスや関数内で
それを変更するようなコードを書いてるとそのオブジェクトの挙動は保証しないのでやらないの推奨
みたいなのドキュメントで読んだ記憶があるけどどこだったかなあそれ。
ていうか実装の統一が利用者から見た挙動の統一より優先されてるのがちょっと気に入らないね。
0257デフォルトの名無しさん2014/08/30(土) 05:03:58.06ID:EIzseELq
>>254
だめ
x = Hoge()
x.a[0] = 1
y = Hoge()
y.a[1] = 2

結局x.aとy.aが共通になってる
0258デフォルトの名無しさん2014/08/30(土) 05:14:29.53ID:86Qko6ZX
Pythonにもアクセス修飾子の導入を!
privateが付いていない変数は恐くて使えない
0259デフォルトの名無しさん2014/08/30(土) 05:38:48.39ID:uyO2lJ7J
良い子は命名規則で察してね、アンダースコア2つ付ければ触ったら○すと脅す意味になるよとPEP8に書いてあった
0260デフォルトの名無しさん2014/08/30(土) 07:15:21.91ID:KLyDeToE
>>257
???

$ python3 --version
}Python 3.4.0

以下の実行結果でしたが。
{1: 2}
0261デフォルトの名無しさん2014/08/30(土) 07:38:12.17ID:ja3NQGax
無難じゃないし怖くて使えない
0262デフォルトの名無しさん2014/08/30(土) 08:02:41.96ID:uyO2lJ7J
>>257
>>254で重要だと思う点は仮引数aのデフォルト値{}はself.aに全く代入されないということだ
辞書としての役目を果すことがないデフォルト{}に不条理を感じて眠れない夜を明かした
0263デフォルトの名無しさん2014/08/30(土) 09:17:06.38ID:mREiC7TA
>>254
ちがうんよ
デフォルト引数は一度しか評価されない
つまりメソッド呼び出し時に毎回評価されるわけじゃないので
デフォルト引数にミュータブルなオブジェクトを指定すると惨いことになる
Python の有名な落とし穴で >>240 が指摘してること
0264デフォルトの名無しさん2014/08/30(土) 16:22:49.56ID:CNskXuGO
urllib.requestのRequestも>>254に近いことやってるしありなんじゃね?
0265デフォルトの名無しさん2014/08/30(土) 16:28:06.56ID:KdcOI92s
>>256
FAQ のデザインと歴史

これは意図された実装で、(C言語で言う) static 変数的な領域を確保するのに便利な側面もあります。

デフォルト引数が一度しか評価されない、という仕様も使い処があって

例えば、定数は、ローカル変数宣言代わりにデフォルト引数に書いておくと、
呼び出し毎に毎回変数へ代入される処理は省略される。
また、こうすることで関数の結合度が弱まり、単体テストが書きやすくなるといった利点もあります。


辞書やタプルの初期化はこんな方法も有

class Hoge:
 def __init__(self, **kwargs):
  self.a = kwargs
0266デフォルトの名無しさん2014/08/30(土) 17:08:03.32ID:KdcOI92s
>>264
用途次第だと思うけど。標準ライブラリ内でも幾つか利用されてます。キャッシュ的な用途で。

但し、歴史的な理由でもあるので(旧バージョンの互換/資産活用等)
新しいコードで積極的に使う理由は特に無く、(書捨てのコードで手短に済ませたい場合、位)
可能ならデコレータやクロージャにする等、別の方法を検討します。

ちなみに、デフォルト引数でのミュータブルなオブジェクトを、
使うなと書いてるのは、google の coding スタイルガイド
0267デフォルトの名無しさん2014/08/30(土) 20:25:41.58ID:KLyDeToE
>>263
>>240を最初は知りませんでしたが、理解できましたので、
>>254で or の後に 「{}」 を書いたのですが。

class Hoge(object):
def __init__(self, a={}):
d = {}
print("default id(a) =", id(a))
print(" new id(d) =", id(d))
print()
self.a = a or d

if __name__ == "__main__":
x = Hoge()
x.a[0] = 1
y = Hoge()
y.a[1] = 2

print(y.a)

実行結果は以下の通りで、
id(a) の値は上下で毎回一致しますが、
id(d) の値は上下で毎回違いますから、
思った通りの結果を得ています。

default id(a) = 140676218322168
new id(d) = 140676218321664

default id(a) = 140676218322168
new id(d) = 140676192340088

{1: 2}
0268デフォルトの名無しさん2014/08/30(土) 21:45:07.57ID:O1vhFAMe
>>267
そうゆう書き方だと__init__に{}を渡した場合インスタンスが入れ替わってしまうので注意してね
使い所を誤るとバグの原因になってしまう

x = {}
h = Hoge(x)
print(h.a is x) #False
0269デフォルトの名無しさん2014/08/31(日) 01:16:31.29ID:4zKdmr70
>>265
> 例えば、定数は、ローカル変数宣言代わりにデフォルト引数に書いておくと、
> 呼び出し毎に毎回変数へ代入される処理は省略される。

それはわかるけど、そのせいで
> この種のバグがよく初心者プログラマに噛み付きます。
みたいな状況になるのとどっちが大事なのかなあ、って思ったりします。

> また、こうすることで関数の結合度が弱まり、単体テストが書きやすくなるといった利点もあります。

ごめんなさい、私のようなあくまでプライベートでPython使ってるだけの人間にはその意味がよくわからないです。

単なる揚げ足取りで実際にはないケースかもかもしれないけれど、
>>237 にしても、
02702692014/08/31(日) 01:23:25.79ID:4zKdmr70
途中で書き込んじゃった。

単なる揚げ足取りで実際にはないケースかもかもしれないけれど、
>>237 にしても、
>>> class Test:
... def __init__(self,a):
... self.a = a or []

>>> L = ['a']

>>> x = Test(a=L)

>>> y = Test(a=L)

>>> x.a
['a']

>>> y.a
['a']

>>> x.a.append('c')

>>> x.a
['a', 'c']

>>> y.a
['a', 'c']

ってなっちゃうよね。
0271デフォルトの名無しさん2014/08/31(日) 06:26:37.35ID:g3F9HZkc
意味がわからないなら黙ってたらいいのに
0272デフォルトの名無しさん2014/08/31(日) 07:03:06.70ID:4Dleen0X
>>269-270
そこまで言うなら

>>> class TestA:
... def __init__(self,a):
... self.a = a or []

>>> L = ['a']
>>> x = TestA(a=copy.deepcopy(L))
>>> y = TestA(a=copy.deepcopy(L))

↑
比べてみ
↓

>>> class TestB:
... def __init__(self,a=copy.deepcopy(['a'])):
... self.a = a

>>> x = TestB()
>>> y = TestB()
0273デフォルトの名無しさん2014/08/31(日) 08:11:42.11ID:B6N6ow9m
>>268
> print(h.a is x) #False
これは予想外でした。勉強になりました。
でも、or {} ってやってますから当然と言えば当然なんですよね。。。

>>272
どのような考えかは分かりませんが、
TestA x と Text B y が一致しますから、例として不適切ではないでしょうか?
おそらく、予想外の結果では?
GCがイタズラしているのでしょうか?

TestA x = <__main__.TestA object at 0x7fa6562052d0>
TestA y = <__main__.TestA object at 0x7fa656205310>

TestB x = <__main__.TestB object at 0x7fa656205790>
TestB y = <__main__.TestB object at 0x7fa6562052d0>

L = ['a']
x = TestA(a=copy.deepcopy(L))
y = TestA(a=copy.deepcopy(L))

print("TestA x =", x)
print("TestA y =", y)
print()

x = TestB()
y = TestB()

print("TestB x =", x)
print("TestB y =", y)
0274デフォルトの名無しさん2014/08/31(日) 08:21:30.62ID:rw/ZY9R1
馬鹿には無理
0275デフォルトの名無しさん2014/08/31(日) 09:18:29.34ID:fQnSs+yg
>>274
馬鹿の一つ覚え
0276デフォルトの名無しさん2014/08/31(日) 10:26:37.86ID:k/gc3SDA
>>273
TestAのxとTestBのyのidが一致するのはGCによるもの
でもこれは主題じゃなくて、>>272が言ってるのはTestA、TestBの各x、yのaについてだろ
0277デフォルトの名無しさん2014/08/31(日) 12:13:50.17ID:kY+m/tLd
>>273

L = ['a']
x = TestA(a=copy.deepcopy(L))
y = TestA(a=copy.deepcopy(L))

z = TestB()
w = TestB()
0278デフォルトの名無しさん2014/08/31(日) 22:53:55.21ID:B6N6ow9m
>>269,272,277
こんなもんでどうでしょう?

import copy
class TestA:
def __init__(self,a):
self.a = a or []

class TestB:
def __init__(self,a=copy.deepcopy(['a'])):
self.a = a

L = ['a']
x = TestA(a=copy.deepcopy(L))
y = TestA(a=copy.deepcopy(L))
y.a.append("y.a")

print("TestA x =", x)
print("TestA x.a =", x.a)
print("TestA y =", y)
print("TestA y.a =", y.a)
print()

z = TestB()
w = TestB()
w.a.append("w.a")

print("TestB z =", z)
print("TestB z.a =", z.a) # !
print("TestB w =", w)
print("TestB w.a =", w.a) # !
print()
0279デフォルトの名無しさん2014/09/01(月) 01:17:47.31ID:0WGpUPMm
下手の考え休むに似たり
02802692014/09/01(月) 02:35:10.29ID:k1ciVbjZ
すんません、レス先が絞れないので。

import copy してる時点である意味負けだと思うんですが。

ミュータブルなオブジェクトを引数で渡されたときは、デフォルトでオブジェクト.copy()にすれば、
利用者にとって優しいと思うんです。
スコープの保持的にも。
0281デフォルトの名無しさん2014/09/01(月) 02:56:34.39ID:SfHA5O2Z
ただでさえ遅いのにインド人もびっくりな発言をするんじゃねえ
0282デフォルトの名無しさん2014/09/01(月) 07:44:30.11ID:Q1FYYJR2
python 3.4.1です。
response = urllib.request.urlopen(req)
として得たレスポンスから
html = response.read()
とやると、同じ関数内では正常に取得できるのですが、
nanotka(response)
とレスポンスを他の関数に渡してその先でread()しようとすると中身が空になってしまいます。
渡した先でBeautifulSoup4に読ませようとしても同様です。
どうやればresponse自体を他の関数に渡せるでしょうか?
0283デフォルトの名無しさん2014/09/01(月) 07:50:36.93ID:zQucGkuf
httplib 使え
0284デフォルトの名無しさん2014/09/01(月) 08:00:54.27ID:YudmxTbc
Requests 使え
0285デフォルトの名無しさん2014/09/01(月) 09:55:46.60ID:tsV5zXYj
>>282
html を渡すようにしようよ。
って思いますが。

最初に読んだ人勝ちになるのがread()
read()呼び出しが二回目以降の人は空を読み込むの。
なので、fseek()とかでfpを先頭に戻しておくと、
>>282の要望を満たせるんだろうけど、
fpを先頭に戻す方法はお勧めしない。

やっぱり、html自体を渡すようにしようよ。

でも改造したいんなら、

class Foo(keisho):
def read(self):
if not self.text:
su = super(Foo, self)
self.text = su.read()
return self.text

とか改造すると良いよ。
0286デフォルトの名無しさん2014/09/01(月) 10:27:46.48ID:srwG2aQM
>>282
response.seek(0)
してから渡せば良くね?
0287デフォルトの名無しさん2014/09/01(月) 10:33:59.51ID:B+PXzyfJ
そもそも response って seekable なんだろうか
ふつうやらないけど
0288デフォルトの名無しさん2014/09/01(月) 10:36:08.89ID:IJ3Nr0Wt
>>283-284
とりあえず標準のurllib使ってみただけなので調べて比較検討してみます。
>>285
ああー元関数で既にreadしてるからなのか…ファイル読み込みと同じ感じなんですね。
渡した先でヘッダーとhtml両方使うのでresponseごと渡したかったのですが
うまくないやり方のようなので仰るとおりにhtmlはhtmlで渡すことにします。

どうもありがとうございました。
0289デフォルトの名無しさん2014/09/02(火) 00:02:55.31ID:xFjNzjIT
djangoを個人で翻訳したい
この場合はdjangoのライセンスに従えば勝手に翻訳しても大丈夫?
0290デフォルトの名無しさん2014/09/02(火) 00:04:24.39ID:AEXaLIIW
pyconの参加費高すぎ
2万もとるとか学生からも5000円とるとかボリすぎ
pythonってオープンソースだよね
0291デフォルトの名無しさん2014/09/02(火) 00:14:26.30ID:HaUEKjfA
>>289
もちろん
0292デフォルトの名無しさん2014/09/02(火) 00:28:16.07ID:rj4rVkNc
スクリプトバトルロワイヤルスレの116のコード見てて気になったんですが、
active_journal.undo()した時に_関数が呼ばれてundoを呼び出してますよね、
このクラス変数いつの間にlambda:print('Bye')が束縛されたんでしょうか
実引数ではないですよね?
0293デフォルトの名無しさん2014/09/02(火) 00:46:44.21ID:YYDqev7Y
android端末内の複数のフォルダを外付けSDにコピー(バックアップ用途)するスクリプトを書いたのですが、エラーが出ます。

フォルダパスをリストとして読み込み、forでフォルダ個数分、
shutil.copytree(src, dst)
としたのですが、SL4AでOperation not permittedとなります。
リスト1個目のフォルダコピー後に上記エラーで中断され、それ以降の処理がされません。

PCで試した時点ではエラーはありませんでした。
コピー元フォルダはシステムフォルダなどではなく、パーミッションはコピー元・先両方rwxrwxr-xとなっています。

どなたか、解決策をご教示頂けますか?
0294デフォルトの名無しさん2014/09/02(火) 01:55:56.14ID:zdu1Qxxi
>>281
インタプリタ型言語に速度を追求するクズですか?
0295デフォルトの名無しさん2014/09/02(火) 03:33:39.16ID:eu1sh5+C
そうだよ
0296デフォルトの名無しさん2014/09/02(火) 13:04:05.12ID:qb4+F2QT
>>299
クラス属性(Journal.undo)・インスタンス属性(self.undo)・引数(undo)の3つがあるので混同に注意
それと
クロージャを理解してる必要がある

>>293
rwxrwxr-x で怒られるならコピー先 rwxrwxrwx でどうなる
0297デフォルトの名無しさん2014/09/02(火) 13:06:15.08ID:qb4+F2QT
× 299
○ 292
0298デフォルトの名無しさん2014/09/02(火) 16:47:38.57ID:VDCsBZvR
apache+mod_phpみたいに
バーチャルホストを設定してxxx.localhost/にアクセスしたらページが見られるようにしたいんですが
pythonの場合はプロジェクト枚に例えばgunicornとかpassenjarを起動しないとだめですか?
0299デフォルトの名無しさん2014/09/02(火) 18:58:35.42ID:eu1sh5+C
何でだよ
mod_pythonにvirtual host設定しとけ
ペチパーはペチパーらしくしていればいい
0300デフォルトの名無しさん2014/09/02(火) 19:00:53.72ID:VDCsBZvR
mod_pythonってapache限定じゃないですか
おれはnginxでやりたいんすよ
0301デフォルトの名無しさん2014/09/02(火) 19:08:54.11ID:mt5THT+8
サーバでPython3と非公式の外部ライブラリを動かしたい
と思いつつ全然勉強が進まない
敷居が高いわ・・・
0302デフォルトの名無しさん2014/09/02(火) 22:30:46.56ID:2UqIo9/b
>>300
mod_phpって書いたからじゃないの?
NginxならPHP-FPMとか書けばいいのに。
0303デフォルトの名無しさん2014/09/02(火) 23:33:31.12ID:rj4rVkNc
そうそれですよ兄貴
それがやりたいんですよ
0304デフォルトの名無しさん2014/09/03(水) 03:10:30.13ID:pl/pTCkk
プロジェクト枚
0305デフォルトの名無しさん2014/09/03(水) 03:49:57.97ID:Ipv4EIPT
>>289
応援してます
がんばってください
0306デフォルトの名無しさん2014/09/03(水) 11:13:39.14ID:DmnNJKZp
GUIツールキットでオススメはやっぱりwxPython?
0307デフォルトの名無しさん2014/09/03(水) 12:45:46.18ID:8RxcontV
>>306
割と定期的にこの手の話題出るな。
金あるならPyQt、金ないけどリッチなGUI作りたいなら
wxPythonっていうのが大方の見解かと。
0308デフォルトの名無しさん2014/09/03(水) 13:01:38.58ID:MAtMcWe1
wxPython に使い慣れてると
C++ で wxWidgets するときも
ほとんど抵抗なく移行作業捗る
0309デフォルトの名無しさん2014/09/03(水) 13:06:40.87ID:DmnNJKZp
wxPythonなんて使ってる奴のセンスを疑う
0310デフォルトの名無しさん2014/09/03(水) 13:07:17.88ID:DmnNJKZp
ID被ったw
0311デフォルトの名無しさん2014/09/03(水) 13:20:49.22ID:O8D1iFyt
PySideって手もあるでよ
0312デフォルトの名無しさん2014/09/03(水) 14:13:41.36ID:SUoPpak6
このスレの速度でID被ったってのはそうそうあり得ないな。自演乙。
0313デフォルトの名無しさん2014/09/03(水) 15:15:45.87ID:DmnNJKZp
いや、マジでID被ってます
専門版で被ったのは初めてかも知れない、ってかこんな近くで被ったことは無い気がする・・・

>>307
金はないのでwxPythonとwxGladeの組み合わせにしようかなあ
PyQtの状況がかなり良さそうですが、ライセンスが面倒そうだし

>>308
C++は少し触ったことがあるのですが、もう触りたくないですね・・・

>>311
了解、少し調べてみます
0314デフォルトの名無しさん2014/09/03(水) 15:32:52.00ID:MAtMcWe1
>>306
>>309-310
>>313
0315デフォルトの名無しさん2014/09/03(水) 16:29:04.66ID:wQfYusgM
おい、となりの部屋とかみてまわれ
かーちゃんとかが2ch画面開いてたら・・・Pyrhonスレに来んなって言え
0316デフォルトの名無しさん2014/09/03(水) 18:25:23.53ID:DmnNJKZp
カーチャンからメールが・・・

J( 'ー`)し「たかしへ。スタンフォード大学のサーバーへハッキングをかけ、
      経済学部とMBAの学位取得者の中にたかしを紛れ込ませました。
      これでたかしの履歴書も立派になると思います。
      就職活動頑張ってね。」
0317デフォルトの名無しさん2014/09/03(水) 18:27:01.27ID:7tHdUujr
githubでアカウント凍結されたひとか
0318デフォルトの名無しさん2014/09/03(水) 19:31:32.72ID:MwmGE5u2
PythonでわざわざGUIなんて必要?
コンソールでinputとprint使えば何とでもなるでしょうに
0319デフォルトの名無しさん2014/09/03(水) 20:07:34.43ID:8RxcontV
人の使い方にいちいちケチ付けんなよ。
0320デフォルトの名無しさん2014/09/03(水) 20:17:24.51ID:ifyJjDEv
TkinterとかTixでいいわ
0321デフォルトの名無しさん2014/09/03(水) 20:47:42.17ID:yrbx30gA
Tkinterのきちんとしたドキュメントって何所かにない? 可能なら日本語で
Python標準ライブラリのドキュメントだとTkを解ってる人向けなのか、何言ってるのかサッパリ分からんw
GUIだから図解で説明してくれると有り難いんだが
0322デフォルトの名無しさん2014/09/03(水) 21:10:29.38ID:mb+i3RoN
python3.3ではtkinterぐらいしか動かないの?
0323デフォルトの名無しさん2014/09/03(水) 22:59:56.46ID:ziplIhf2
3系はPySide使えるよ
0324デフォルトの名無しさん2014/09/03(水) 23:06:44.46ID:SUoPpak6
>>315
同じ会社の奴が書き込んでる可能性があるな
0325デフォルトの名無しさん2014/09/04(木) 11:46:06.76ID:o42KfBCO
日本語の資料も多そうだしwxPythonとwxGladeを早速インストールしようと思ったら
Python3に対応していなくてうああって頭抱えてる
0326デフォルトの名無しさん2014/09/04(木) 13:50:46.00ID:MHZTueb1
pgr
0327デフォルトの名無しさん2014/09/04(木) 16:02:50.83ID:h4TpAEJ2
デベロッパー版と使え
意外と・・・だぞ
0328デフォルトの名無しさん2014/09/04(木) 19:30:09.35ID:o42KfBCO
それはWindowsのPythonでも動くのでしょうか・・・
Linux版しかなかった記憶が
0329デフォルトの名無しさん2014/09/04(木) 19:34:01.03ID:89WWur94
GUIはVB使っといたらええねん
0330デフォルトの名無しさん2014/09/04(木) 19:47:40.94ID:okNlOH27
pyqtでいいじゃん
外部ライブラリを使って大きな事するわけじゃないんだろ?
GPLでもいいじゃん
ソースコードを公開したくないとかだったらインタプリタでGUIはやるな
0331デフォルトの名無しさん2014/09/04(木) 21:31:58.28ID:14KwuRYz
pysideとcythonで全部解決ね
0332デフォルトの名無しさん2014/09/04(木) 22:25:30.80ID:uXZedlGY
>>328
ダウンロード http://wxpython.org/Phoenix/snapshot-builds/
ドキュメント http://wxpython.org/Phoenix/docs/html/main.html
ファイル名にwinとあるのがWindows用で、cp33とあるのがPython3.3用
whlファイルはインストーラ使わなくても
拡張子をzipに変えて解凍し\Lib\site-packagesフォルダに入れれば動く
0333デフォルトの名無しさん2014/09/05(金) 03:29:00.33ID:ntZcqOEB
>>330
pyqtって外部ライブラリを使うと金が掛かるの?
0334デフォルトの名無しさん2014/09/05(金) 08:54:26.18ID:vSgfL4D2
変数名にも2バイト文字を使えるようにしろ
0335デフォルトの名無しさん2014/09/05(金) 08:58:44.47ID:NMfZE3Cv
ジャップ脳どうにかしろ
0336デフォルトの名無しさん2014/09/05(金) 09:16:52.85ID:SzRzlQrZ
今時2バイト文字とか言っちゃう奴
0337デフォルトの名無しさん2014/09/05(金) 13:31:24.75ID:EqZl1vUZ
DJangoを翻訳したら日本のDJangoプロジェクトに潰されるだけ
知名度が無い奴が翻訳に手を出したら知名度ある奴の声で干されるよ
不満があっても縄張りは守るべき
0338デフォルトの名無しさん2014/09/05(金) 15:09:42.85ID:B+t3kUZb
>>334
Python3 ならある程度使える
0339デフォルトの名無しさん2014/09/05(金) 16:55:34.89ID:C4S9TPhj
>>337
さっそく基地外が現れたなw
0340デフォルトの名無しさん2014/09/05(金) 17:54:52.41ID:NMfZE3Cv
別にこんなスレで聞いてる奴が何かを成せるとも思えないし
好きに翻訳したらいいだろ
断言するけど1月後には忘れてるよ
0341デフォルトの名無しさん2014/09/05(金) 18:28:14.14ID:jzMG0f6n
pythonのスクリプトで画像ファイルをリネームして
約400枚の画像のうち100枚くらいが消えてしまったんですけど、この100枚はどこに行ったんでしょうか?
0342デフォルトの名無しさん2014/09/05(金) 18:31:31.35ID:H8H20MG/
pythonが働いたぶんの給料になった
0343デフォルトの名無しさん2014/09/05(金) 18:42:51.84ID:+gwocEcR
上書きしたかPythonに見せかけたRubyの陰謀
0344デフォルトの名無しさん2014/09/05(金) 18:47:28.69ID:/RgpSIEc
scipyのインストールはwindowsが一番楽
linuxはとてつもなく面倒くさい
0345デフォルトの名無しさん2014/09/05(金) 18:57:53.26ID:73PYqi2a
>>344
知ってるけど、それが何か?
0346デフォルトの名無しさん2014/09/05(金) 19:03:11.46ID:B+t3kUZb
簡単に入りそうだけど具体的にどこが難しいん
0347デフォルトの名無しさん2014/09/05(金) 19:38:26.87ID:/RgpSIEc
入りそうって予測じゃなくて結果で語れ
0348デフォルトの名無しさん2014/09/05(金) 19:50:43.32ID:H8H20MG/
apt-get install python-scipy
0349デフォルトの名無しさん2014/09/05(金) 20:02:23.65ID:B+t3kUZb
>>347
2chに結果だけ書いてあってそれを信じるのか?
0350デフォルトの名無しさん2014/09/05(金) 20:41:00.38ID:N3l99Mqq
すんません、以下のようにタプルのリストの中身を
csvファイルとして書き出すにはどうすればいいですか

[(1,2,3),(4,5,6),(7,8,9)]
↓
1,2,3改行
4,5,6改行
7,8,9改行
0351デフォルトの名無しさん2014/09/05(金) 21:03:09.38ID:B+t3kUZb
import csv
writer = csv.writer(open(...))
for tup in [(1,2,3), ...]: writer.writerow(tup)
0352デフォルトの名無しさん2014/09/05(金) 21:33:05.09ID:yYkcJRXP
>>350
#1, #2 お好きな方をどうぞ。

if __name__ == "__main__":
import csv
L = [(1,2,3),(4,5,6),(7,8,9)]
path = "a.csv"
with open(path, "w") as csv_file:

csv_writer = csv.writer(csv_file)

for tup in L: # 1.
csv_writer.writerow(tup) # 1.
# or
#
# csv_writer.writerows(L) # 2.
0353デフォルトの名無しさん2014/09/05(金) 21:37:39.84ID:uS50mHWr
>>344
ど素人乙。
0354デフォルトの名無しさん2014/09/05(金) 22:37:37.05ID:BuYJkYis
scipy のインストール pip でも apt でも特に苦労した記憶ないけどなぁ
0355デフォルトの名無しさん2014/09/06(土) 11:20:53.48ID:qFRbG2Z2
ふつうの Linux ユーザは自分で make install なんてふだんしないからな。
scipy の make install がめんどくさいかどうかしらんけど。
0356デフォルトの名無しさん2014/09/06(土) 15:43:10.65ID:NtkIEr6D
マルチスレッドを使っちゃいけない環境なんですけど
Pythonの標準ライブラリ限定で
http://docs.python.jp/3/library/concurrency.htmlを使わなければ大丈夫という認識でいいですか?
0357デフォルトの名無しさん2014/09/06(土) 15:46:55.13ID:3Ci1QYt7
> マルチスレッドを使っちゃいけない環境
なんでこんな環境なの?
その理由によるとしか言えない。
0358デフォルトの名無しさん2014/09/06(土) 15:49:34.19ID:73g62t4Z
インタプリタの実装によってはネイティブスレッド使ってるかも知れないし、変な前提おくのは危険
0359デフォルトの名無しさん2014/09/06(土) 15:50:45.68ID:NtkIEr6D
マルチスレッドを使うと落ちるプログラムだから
0360デフォルトの名無しさん2014/09/06(土) 16:01:39.42ID:73g62t4Z
そのプログラムのreadmeにさぁ
もう少し「マルチスレッド」が正確に定義されてないわけ?
0361デフォルトの名無しさん2014/09/06(土) 16:05:03.14ID:NtkIEr6D
マルチスレッドはこちらを見てください
http://e-words.jp/w/E3839EE383ABE38381E382B9E383ACE38383E38389.html
質問締めます
0362デフォルトの名無しさん2014/09/06(土) 16:05:44.35ID:NtkIEr6D
この時間はスレッドすら知らないバカしかいないな
0363デフォルトの名無しさん2014/09/06(土) 16:06:10.15ID:73g62t4Z
そういう辞書の単語の話してんじゃねえよクソカス
てめえの首締めろ
0364デフォルトの名無しさん2014/09/06(土) 16:39:05.17ID:ewJ1qW7A
エスパーでレスできない奴に2chを使うのは難しい
0365デフォルトの名無しさん2014/09/06(土) 16:44:17.65ID:ChfT6Oe0
自演を見て見ぬふりをするー力ですね
0366デフォルトの名無しさん2014/09/06(土) 16:51:19.96ID:Ya/Sb4GC
マルチスレッドが駄目ならマルチプロセスを使えばいいじゃない
0367デフォルトの名無しさん2014/09/06(土) 19:57:34.69ID:+c/XgZRA
pygame使って書かれてる 1000行以下のコードをたくさん写経したい
0368デフォルトの名無しさん2014/09/06(土) 21:20:09.98ID:aSqZC9W5
>>366
マリーアントワネット乙
0369デフォルトの名無しさん2014/09/06(土) 22:08:31.22ID:s8SMoxGr
マルチ商法でPythonを使う方法を教えて下さい
0370デフォルトの名無しさん2014/09/06(土) 22:31:16.99ID:Xltmdnlr
>>351-352
出来ましたサンクスです
タプルの各要素を文字列に変換してカンマでつないで改行を付けて…と
やるのは大変だなあと思っていたので助かりました
0371デフォルトの名無しさん2014/09/07(日) 04:31:27.38ID:qQBINkdt
>>370
別に大変でもないだろう
for tup in [(1,2,3),(4,5,6),(7,8,9)]: print ",".join(map(str, tup))
0372デフォルトの名無しさん2014/09/07(日) 08:30:55.48ID:eY6muIbX
なぜcsvは消えないのか
0373デフォルトの名無しさん2014/09/07(日) 08:44:35.48ID:pkIO4dh2
柔軟さは無いけど一番シンプルなデータ交換形式だからなあ
0374デフォルトの名無しさん2014/09/07(日) 08:54:56.12ID:aeHwCaJX
SuperCalcは偉大だったな
0375デフォルトの名無しさん2014/09/07(日) 10:02:43.05ID:SXktbayV
csv って RFC とかあるんだっけ
0376デフォルトの名無しさん2014/09/07(日) 11:32:55.03ID:rexNlDPn
import mycodeを書かないで
mycode.alert()って書いたら
mycode.pyを読み込んでmycode.pyで定義したalert()を呼び出すことを自動でやりたいんですが
オートローダっていうのはpythonでやってるのほぼ見かけません
pythonではオートローダはやらないものですか?
0377デフォルトの名無しさん2014/09/07(日) 12:53:49.04ID:7c+Hv3u7
>ほぼ見かけません -> 見たことがある訳だな

>やらないものですか? -> 見たことあるのにやらないと思うのはなぜ?
0378デフォルトの名無しさん2014/09/07(日) 13:33:39.11ID:rexNlDPn
見たことあること==やるべきではない

バカ回答者は引っ込んどけよ
0379デフォルトの名無しさん2014/09/07(日) 13:55:48.46ID:v5LNVtzh
似たようなのはできると思う
でもPythonの世界でトリッキーなコードはイカンでしょ
import thisしてみよう
0380デフォルトの名無しさん2014/09/07(日) 14:22:18.08ID:MFWv1auY
>>376
プログラミング歴は長いけどオートローダという仕組み自体初めて聞いた
調べてみたらPHPの機能のようだが…(PHPは一度も触ったことがないから知らない)
http://php.net/manual/ja/language.oop5.autoload.php

IDEを使えばimportは自動で補完されてそのモジュールの情報が入力候補に反映されるようになる
オートローダは実行時にモジュールを指定するからIDEの入力支援が得られない
ゆえにPythonに限らずオートローダとやらを使いたがる人はメモ帳で開発してる人など少数派ではないかな
0381デフォルトの名無しさん2014/09/07(日) 14:34:15.31ID:wcTCVDdd
[見たことあること==やるべき] ではない
[見たことあること==やるべきではないこと]
0382デフォルトの名無しさん2014/09/07(日) 15:23:05.69ID:tMQWCYQT
(歴が長いのにautoload知らないってことはperlやruby触ったことがない人なのかな)
0383デフォルトの名無しさん2014/09/07(日) 15:27:25.45ID:eUMfgX6t
そりゃ誰が好き好んでゴミ箱に手を突っ込むんだ?
おまえの趣味なら普通に引くから止めた方がいいぞ
0384デフォルトの名無しさん2014/09/07(日) 15:42:08.05ID:qGzfz7wC
漏れも引くわ
Basic の
On Error Resume Next
に通じるものがあるな
0385デフォルトの名無しさん2014/09/07(日) 18:39:24.77ID:LouszFLz
遅延ロードしてスタートアップを速めたいのかも
しかしバカ回答者とか過激ね
0386デフォルトの名無しさん2014/09/07(日) 18:45:28.34ID:eUMfgX6t
昨日から沸いてるマルチスレッドがどうとか君じゃないの
0387デフォルトの名無しさん2014/09/07(日) 21:01:43.28ID:8sSyeZUl
まあ、Pythonではやらない(やるべきでない)が答えでいいじゃない終わり終わり
0388デフォルトの名無しさん2014/09/08(月) 00:04:05.59ID:MQoHZ59l
>>382
PerlとRubyのautoloadは遅延読み込みの機能でPHPの未定義モジュール自動読み込み機能とは別じゃね?
0389デフォルトの名無しさん2014/09/08(月) 01:59:20.03ID:295S7C6I
超初心者なのでPython3xにwxPythonをpipで入れる方法でハマったんで
これからの人用に書いときますん。
pip install -U --pre -f http://wxpython.org/Phoenix/snapshot-builds/ wxPython_Phoenix

検索で調べた結果のやつはwxPython_PhoenixじゃなくてwxPython-Phoenixになってるので
コピペ実行するとエラーでインストールできなかったんで。

ところで、3.4.1が扱えるおすすめのエディタ教えてください。
pyscripterが使えないようなのでPyCharm使ってるんですが、
他におすすめがあれば是非
0390デフォルトの名無しさん2014/09/08(月) 02:07:51.88ID:jLwgo0pq
初心者向けじゃないけどvim
0391デフォルトの名無しさん2014/09/08(月) 02:22:17.72ID:qdDflaMT
秀丸とipythonを連携して賢い補完使ってる
0392デフォルトの名無しさん2014/09/08(月) 03:02:16.77ID:tbHi8RxM
言語や言語のバージョンごとにエディタ使い分けるとか言う輩からは知性やプログラミングセンスを感じられない。
0393デフォルトの名無しさん2014/09/08(月) 03:46:00.76ID:f5Blo0Jc
atom
0394デフォルトの名無しさん2014/09/08(月) 06:15:54.66ID:B3WRwJbR
pycharmで不満とか、vimくらいしか希望がないと思うわ
0395デフォルトの名無しさん2014/09/08(月) 16:18:32.22ID:7mMD4zWs
すみません、素人ですが正規表現で
リストの中から、アンダーバー2個+数字3桁〜4桁 を検索して、個数をカウントしたいんですがどうかけばいいでしょうか?
["ehwhuuw__7621xbu","ehuuw__762","ew__7629ewbu","e3uw__7621w"]

__7621 ...2個
__762 ...1個
_7629...1個
0396デフォルトの名無しさん2014/09/08(月) 16:23:35.33ID:dO+Fd23e
import re
s=["ehwhuuw__7621xbu","ehuuw__762","ew__7629ewbu","e3uw__7621w"]
re.findall('_\d', ''.join(s))
print(len(s))
0397デフォルトの名無しさん2014/09/08(月) 17:32:55.85ID:7mMD4zWs
>>396
ありがとう兄貴
0398デフォルトの名無しさん2014/09/08(月) 17:38:36.41ID:jHIpD0hc
import re
from collections import defaultdict
L = ["ehwhuuw__7621xbu","ehuuw__762","ew__7629ewbu","e3uw__7621w"]
d = defaultdict(int)
for s in re.findall(r"__\d{3,4}", "\n".join(L)):
 d[s] += 1
for k, v in d.items():
 print("{} ...{}個".format(k, v))
0399デフォルトの名無しさん2014/09/08(月) 19:12:15.84ID:2hDWn5Kx
ランダム値を4つ格納したタプルを作ろうと思って
以下のコードを書いたんですが
変数 i が何にも使われないのでもったいなく思います
iを使わないで4回ランダム値を作る方法はありますか

import random
r4 = tuple(random.randint(0, 9) for i in range(4))
0400デフォルトの名無しさん2014/09/08(月) 19:26:07.70ID:jHIpD0hc
r4 = (random.randint(0, 9), random.randint(0, 9), random.randint(0, 9), random.randint(0, 9))
0401デフォルトの名無しさん2014/09/08(月) 19:26:57.42ID:JJm3d9pE
>>400
絶対書くと思ったw

思い留まってよかった
0402デフォルトの名無しさん2014/09/08(月) 19:50:09.43ID:PbRMq4gS
r4 = tuple('%04d' % random.randint(0,9999))
0403デフォルトの名無しさん2014/09/08(月) 22:10:17.54ID:05qoBtOF
(random.randint(0,9),)*4
0404デフォルトの名無しさん2014/09/08(月) 22:12:30.02ID:05qoBtOF
今の無し
0405デフォルトの名無しさん2014/09/08(月) 23:24:33.62ID:2hDWn5Kx
助言ありがとうございます
自分でもitertoolsのドキュメントを見て何とか作ったんですが
すごく見づらくて、変数を一つなくすために敢えてこれを採用する
理由はないと思った
>>399の方がマシに見える

import random, itertools
r4 = tuple(itertools.starmap(random.randint, itertools.repeat((0, 9), 4)))
0406デフォルトの名無しさん2014/09/08(月) 23:26:21.10ID:4KrAPuZv
numpy使っちゃダメなんか?

import numpy as np
r4 = np.random.randint(0, 9, 4)
0407デフォルトの名無しさん2014/09/09(火) 00:23:43.34ID:O602X3BE
iを_にしたらこれは使わないぞって見た目になる
0408デフォルトの名無しさん2014/09/09(火) 01:32:39.94ID:qMrOeKwe
>>399
もったいないから使いたくないって発想が意味分からん
ループで回す時はどの言語でもindexは使うけど
0409デフォルトの名無しさん2014/09/09(火) 04:51:15.63ID:1Ho4xFY0
2.x だと内包表記内で使う一時変数のスコープ問題と、
lint等で未使用変数の検査に引っ掛かる事、くらいかな。

後者は、変数名を _ にする事でこの変数は使わないという意図を伝えられます。
0410デフォルトの名無しさん2014/09/09(火) 08:29:53.02ID:SEObCJuW
リスト内包じゃなくてジェネレータ式だから
スコープの問題は2.xでも無いと思う
0411デフォルトの名無しさん2014/09/09(火) 21:49:36.95ID:QKhHrQUh
python -r "print(1)"
こんな感じでコマンドラインからコードを渡して実行する方法を教えてください
0412デフォルトの名無しさん2014/09/09(火) 21:50:25.81ID:QKhHrQUh
pythonに引数を渡さないで起動するインタラクティブシェルとかipythonじゃなくて
python 引数 "コード"
で実行できるのがやりたいんです
0413デフォルトの名無しさん2014/09/09(火) 21:51:02.84ID:1Ho4xFY0
>>411
-c
0414デフォルトの名無しさん2014/09/09(火) 21:54:55.57ID:QKhHrQUh
>>413
ありがとうございます。
0415デフォルトの名無しさん2014/09/10(水) 18:36:38.61ID:/KH51cxp
      \       ヽ           |        /        /
          \      ヽ               /      /
‐、、         殺 伐 と し た ス レ に 鳥 取 県 が ! !      _,,−''
  `−、、                  __/\            _,,−''
      `−、、              _|    `〜┐         _,,−''
                      _ノ       ∫
                  _,.〜’        /
───────‐     ,「~             ノ    ───────‐
               ,/              ` ̄7
                |     島 根 県     /
           _,,−'   ~`⌒^7            /    `−、、
        _,,−''            丿            \,      `−、、
 ,'´\           /  _7       /`⌒ーへ_,._⊃         /`i
 !   \       _,,-┐    \    _,.,ノ          r‐-、、      /   !
 ゙、   `ー--<´   /      L. ,〜’             ゙、  >−一'′   ,'
  y'  U      `ヽ/     /            ヽ      ヽ '´     U   イ
                                ____
         /      __        |       \____\
    ___/__ / ̄    ____|____ \ \____\
       //ヽ   /___         /|\       \ \____\
     / / ヽ  / /__     /  |  \       \_______
   /  /   / /   /     /    |    \          |    \
  /   /  / /  _/   __/      |      \__      |     \  ̄―_
0416デフォルトの名無しさん2014/09/10(水) 18:59:05.86ID:hXO3q56q
Ruby スレでどうぞ
0417デフォルトの名無しさん2014/09/10(水) 23:53:54.94ID:hgFKfnel
a = [1, 2]
b = [1, 2, 3]
c = list(set(a) - set(b))
print(c)
d = list(set(b) - set(a))
print(d)

aとbから重複しない値のみ取得したいんですがこうやって引き算すると順番が違うだけで結果が変わってきます
ここでは重複してない値は3なので[3]の結果が欲しいんですが良い方法を教えてください
0418デフォルトの名無しさん2014/09/11(木) 00:02:19.06ID:+cqss+B2
set(a) ^ set(b)
0419デフォルトの名無しさん2014/09/11(木) 00:07:58.68ID:NkzLw49L
set(a).symmetric_difference(set(b)) も同じ
0420デフォルトの名無しさん2014/09/11(木) 00:20:59.39ID:SkcYUdPe
>>418-419
覚えましたありがとうございます
0421デフォルトの名無しさん2014/09/11(木) 08:06:46.97ID:2Pzpu/rd
>>> La = [1, 2, 4]
>>> Lb = [1, 2, 3]
>>> sta = set(La)
>>> stb = set(Lb)
>>> sta ^ stb
{3, 4}
>>> sta - (sta & stb)
{4}
>>> stb - (sta & stb)
{3}
0422デフォルトの名無しさん2014/09/11(木) 08:45:20.82ID:BpRRpzGv
>>> La = [1, 2, 4]
>>> Lb = [1, 2, 3]
>>> sta = set(La)
>>> stb = set(Lb)
>>> sta = sta ^ stb
>>> stb = sta ^ stb
>>> sta = sta ^ stb
>>> sta
{1, 2, 3}
>>> stb
{1, 2, 4}
0423デフォルトの名無しさん2014/09/11(木) 16:36:14.20ID:fJPG+Epr
何でパイソンでは
1 or 0 # 1
-1 or 1 # 1
帰ってくる値がboolじゃなくて大きい値が返ってくるのは何故ですか?

そして
-1 or 0 # -1
これが0にならないのは何故ですか?0のほうが-1より大きいのに何故ですか?
0424デフォルトの名無しさん2014/09/11(木) 16:40:22.95ID:SNUYrGFx
>>> 0 or 1
1
>>> 1 or -1
1
>>> -1 or 1
-1
>>> -1 or 0
-1
>>> 0 or -1
-1
0425デフォルトの名無しさん2014/09/11(木) 16:59:20.81ID:fJPG+Epr
あと
not not -1 # True
なのに
True == not not -1
て書くとシンタックスエラーになるのはどうしてですか?
True == (not not -1)書かないといけなのですか?
0426デフォルトの名無しさん2014/09/11(木) 17:12:36.46ID:FGYKtmPM
>>423
http://docs.python.jp/3.3/reference/expressions.html#boolean-operations
>>425
http://docs.python.jp/3.3/reference/expressions.html#operator-precedence
言語仕様くらい読めよ
0427デフォルトの名無しさん2014/09/11(木) 18:25:04.21ID:zsr7lN4z
CGIで次のようなことをやりたいと思っています。

ブラウザからtest.cgiに次のパラメータをセットします
http://xxx.xx.xx/test.cgi?ADR=****
(****の部分は住所文字列をEUC-JPでURLエンコードしたもの)

test.cgiで、****を取り出したいです。
(その後別のURL
http://aaaa.aa.aa/hoge.cgi?ADR=****&;amp;HOGE=〜
のようなものを作りたいです。)

test.cgiは今こんな感じです。
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import cgi
import os

if 'QUERY_STRING' in os.environ:
query = cgi.parse_qs(os.environ['QUERY_STRING'])
else:
query = {}

if query.has_key('ADR'):
#
# ここらへん
#
else:
qstring = "%c5%ec%b5%fe%c5%d4%c0%e9%c2%e5%c5%c4%b6%e8%b4%dd%a4%ce%c6%e2%b0%ec%c3%fa%cc%dc"
#上は「東京都千代田区丸の内一丁目」をeuc-jpでエンコードしたもの

「ここらへん」のところをどのように書けばいいでしょうか?
バージョンは2.7です。
0428デフォルトの名無しさん2014/09/11(木) 18:27:17.36ID:SNUYrGFx
ぐぐれ
0429デフォルトの名無しさん2014/09/11(木) 19:00:53.66ID:IKu3TPqx
EUC(苦笑)
0430デフォルトの名無しさん2014/09/11(木) 19:28:49.11ID:/zpmHeuB
PyMouseってどうやって使うの?
PyMouseというモジュールがどこにもない

win-64bitです
0431デフォルトの名無しさん2014/09/11(木) 19:31:48.33ID:NzeRUD4Z
https://github.com/SavinaRoja/PyUserInput
説明読んだの?
0432デフォルトの名無しさん2014/09/12(金) 19:52:51.46ID:PX2u49pT
リストが空かどうか調べる場合

list1 == []
list1 == None
どれもTrueになるけどどれが一番いい?
0433デフォルトの名無しさん2014/09/12(金) 19:55:12.96ID:ndpp7y5u
if no list1:
print("list1は空です。")
0434デフォルトの名無しさん2014/09/12(金) 19:56:05.39ID:ndpp7y5u
>>433 は間違い。

こっちが正解
if not list1:
print("list1は空です。")
0435デフォルトの名無しさん2014/09/12(金) 20:04:52.80ID:ylwL1QX/
not len(list1)
0436デフォルトの名無しさん2014/09/12(金) 20:20:00.55ID:r3UiEGpM
ここいらはPythonのよろしくない面だよね
is Noneでも、== Noneでもエラーにならないのでバグの元
「if not オブジェクト名」の形式って、慣れないと違和感ありまくりだし
オブジェクト名のあとに何か比較演算子を書き忘れたケースと区別が付かない

Rubyには オブジェクト名.Empty?という形式の、空かどうかを調べるための
専用メソッドがあるらしい
文字列やリストが空であることを調べる処理は、実践でよく出てくるので
こっちのアプローチの方がいいよね
0437デフォルトの名無しさん2014/09/12(金) 20:22:47.52ID:yP3LRu33
list1 == None は False ですよね?

>>436 個人的にはあんまりメソッドが肥大化するのもなぁ…という気もちょっとするぜ
0438デフォルトの名無しさん2014/09/12(金) 20:32:52.43ID:nceQ+kAP
そんなのセマンティック次第としか
0439デフォルトの名無しさん2014/09/12(金) 20:50:38.60ID:6/MBgQha
ちゃんとアンカーはって話しようぜ。

>>432
>>437もいってるけど、

「リストが空」の意味が「要素が一つもないリストオブジェクト [] 」なら、

list1 == []
は True

list1 == None
は False

if 文でつかうなら>>434
それがリストであり、かつ空かどうかまで調べたい(っていう用途があるのかどうかしらんけど)なら、
list1 == []
0440デフォルトの名無しさん2014/09/12(金) 21:32:59.99ID:0egAJuXf
>>439
型を気にしないのは慣れの問題だと思うけど、習得時のつまづき発生ポイントの一つだった
細かく調べなくても大丈夫だよ楽しようぜ、という型に対する姿勢をPythonから感じている
0441デフォルトの名無しさん2014/09/12(金) 21:49:59.15ID:42d4Lifz
list1 = []
print([] == list1) # True by Python 3.4
0442デフォルトの名無しさん2014/09/12(金) 22:18:13.02ID:w7Q0XV7Q
>>436
==Noneと、is Noneの違いでバグは起こり得ないよ
意味は同じだけど、「シングルトンだから」とか「早いから」とかでisが推奨されてるだけだと思ってる

>オブジェクト名のあとに何か比較演算子を書き忘れたケースと区別が付かない
そういうときはnotの優先順位の低さ的にnot (number == 42)のようにかっこをつけることになる
だから書き忘れと区別がつかないことはないよ
0443デフォルトの名無しさん2014/09/12(金) 22:57:04.97ID:ey3J6Nj0
空か調べるだけのことにリストの新規インスタンス作ってから破棄させるのは無駄が多いよ
0444デフォルトの名無しさん2014/09/13(土) 01:07:17.12ID:orQ+g9GD
True by Python 3.4てことはPython 3.5で変わったのか
0445デフォルトの名無しさん2014/09/13(土) 06:24:29.70ID:wsjksV8g
絶対にリストってわかってたら要素数を調べる
他の可能性もあるならそこらへんも考慮して他の比較する
0446デフォルトの名無しさん2014/09/13(土) 09:55:01.17ID:MVvvLNTb
比較する変数が絶対にリストである保証があるならnotでいいんだけど・・・

not None # True
not [] # True
not [1] # False
not 1 # False
not "1" # False

notだけで判定するのは危ないと思う

not None and len(None) > 0 # TypeError
not 1 and len(1) > 0 # False
not [1] and len([1]) > 0 # False
not 1 and len(1) > 0 # False
not "1" and len("1") > 0 # False
0447デフォルトの名無しさん2014/09/13(土) 10:23:27.54ID:6NBWszmd
>>446
listが空かどうかの判定と、等号を組み合わせることあるの?
0448デフォルトの名無しさん2014/09/13(土) 10:29:26.61ID:2tjB89qC
len(list)が負になるケースがあるのかも知れないぞ
0449デフォルトの名無しさん2014/09/13(土) 10:29:36.85ID:JzuVyG0H
>>446
その例で何を示したいのかよくわからん

> not [1] and len([1]) > 0 # False
これは「[1]が空であってしかも長さが0より大きい」って意味だからlistなどでは必ずFalseになるよ

not Lで空か判定しましょうってのはGoogleスタイルガイドなどでも書かれてるから、これはもはやPythonの流儀じゃね
0450デフォルトの名無しさん2014/09/13(土) 10:37:03.93ID:ls6jz6C9
Pythonのローカル変数って関数内でしか生成されないですよね?
次のコードを実行すると、変数 i は外側も内側もきちんと0から9まで
回っているように見えるのはなぜでしょ
本来なら、内側のループで i が 9 に更新きされてしまうので
外側のループは1度しか実行されないと思うんですが

for i in range(10):
  print('外:{}'.format(i))
  for i in range(10):
    print('内:{}'.format(i))
0451デフォルトの名無しさん2014/09/13(土) 10:44:48.70ID:pJQFHgIC
>>446
リストであるかと、空であるかを組み合わせるなら、普通に…
if isinstance(x, list) and not x:

>>450
iの値に1が加算されるんじゃない
rangeが保持してるカウンタの値がループが回るごとにiへ代入される
0452デフォルトの名無しさん2014/09/13(土) 11:50:05.10ID:0s9sqgks
>>432
空のリストか判定する式をまとめるとこうなるか

# ブール値のコンテキストでFalseと評価される値が真
not value
# 空のシーケンスかマッピングが真
not len(value)
# 又は
len(value) == 0
# 空のリストが真
isinstance(value, list) and not value
# 又は
repr(value) == '[]'
# 又は
value == []
0453デフォルトの名無しさん2014/09/13(土) 11:56:28.31ID:MVvvLNTb
type([]) == list and len([])
0454デフォルトの名無しさん2014/09/13(土) 19:49:14.17ID:6NBWszmd
>>432
1番良い方法を教えて下さいって奴に
複数の方法を教えるってなんだいそれ?
しかもまとまってないし。
複数の方法をダラダラ並べてるだけだ。

>>451 の書いてる通り、
if isinstance(obj, list) and not list:

が「1番」いいんじゃないの?
0455デフォルトの名無しさん2014/09/13(土) 19:52:31.44ID:6NBWszmd
>>450
うーん、以下の結果で分かると思ってたけど分かりませんでした。
range() と変数のscopeの実装について知る必要があると思いましたよ。

挙動からシッタカで答えると、
Pythonでは、range()毎にindexを生成していて、
前のrange()のindexが生きている時に再びrange()を使うと、
当然に新しくindexを生成するんだけど、
生成するときには前のrange()のindexと
名前が被っているか?いないか?を考慮しない。

参照するときの名前解決の方法として、
参照するindexの名前と一致するrange()のindexが複数あれば、
新しくできたindexを優先して使っているんじゃないでしょうか?

if __name__ == "__main__":
for i in range(10):
print('外:i={}, id(i)={}'.format(i, id(i)))
for i in range(10):
print('内:i={}, id(i)={}'.format(i, id(i)))
print()

for j in range(10):
print('j={}, id(j)={}'.format(j, id(j)))

正確な話を知りたければ、本家に行って実装を聞くしかないんじゃない?
0456デフォルトの名無しさん2014/09/13(土) 21:08:23.51ID:yoZ+gn+2
>>450
>>> for i in [0, 1, 2]:
print('外:{}'.format(i))
for i in [0, 1, 2]:
print('内:{}'.format(i), end=" ")
print('\n外:{}\n'.format(i))


外:0
内:0 内:1 内:2
外:2

外:1
内:0 内:1 内:2
外:2

外:2
内:0 内:1 内:2
外:2
04574562014/09/13(土) 21:11:10.33ID:yoZ+gn+2
>>> for i in [0, 1, 2]:
    print('外:{}'.format(i))
    for i in [0, 1, 2]:
     print('内:{}'.format(i), end=" ")
    print('\n外:{}\n'.format(i))
04584562014/09/13(土) 21:33:16.48ID:yoZ+gn+2
外側のループは外側のrange(10)で生成されるオブジェクトに対する処理
内側のループは内側のrange(10)で生成されるオブジェクトに対する処理
iは外側のループのたびに、外側オブジェクトの各要素に書き換えられる
0459デフォルトの名無しさん2014/09/13(土) 22:34:57.50ID:cX8bnUuM
>>450
for ループは in の右にあるコンテナなりイテレータの値を取り出し尽くしたら終了する
そのコードだと外側のループはまだ 0 しか取り出してないので終了しない
C の for (; i < 10; i++) とは違う
0460デフォルトの名無しさん2014/09/13(土) 22:38:15.24ID:p5KhMtpi
venvで仮想環境を作ったんですけど特定のディレクトリに言ったら自動でアクティブにする方法ありませんか?
~/python-root/flask以下ならflask関係のパッケージをインストールした環境
~/python-root/scraping以下ならスクレイピング関係のパッケージをインストールした環境
ってな具合に自動で切り替えたいんです
0461デフォルトの名無しさん2014/09/13(土) 23:10:16.78ID:Mqgtp+Th
シェルでcdコマンド再定義するくらいしかねえだろ
virtualenv wrapperでそんなtipsあった気がする
0462デフォルトの名無しさん2014/09/13(土) 23:10:24.72ID:NpwSNp6m
分からねえくせに長文とか何がしたいの
0463デフォルトの名無しさん2014/09/14(日) 00:40:39.25ID:WjxSscFS
つまりそのあたりを面倒見てくれるpyenvを使うのがpython開発環境では楽ってことですね
0464デフォルトの名無しさん2014/09/14(日) 12:48:41.37ID:+tpH58Gc
ABC=re.compile("abc")
s="xyzabcPQR"
ABC.search(s)
としたとき、左の"xyz"や右の"PQR"を拾う方法はありますか。
perlの$`とか$'に相当するものが欲しいのですが。
0465デフォルトの名無しさん2014/09/14(日) 13:15:20.04ID:nmqX8w92
import re

r = re.compile(".*abc.*")
s="xyzabcPQR"
print(r.search(s))
0466デフォルトの名無しさん2014/09/14(日) 13:24:27.67ID:3Uu/YUkP
>>464
import re

ABC = re.compile('(.*)abc(.*)')
s = 'xyzabcPQR'
ABC.search(s).groups()[0]
ABC.search(s).groups()[1]
0467デフォルトの名無しさん2014/09/14(日) 13:40:13.93ID:GfzrwnZs
これはpythonとあまり関係ないですが皆さんエディタってなに使ってますか?
0468デフォルトの名無しさん2014/09/14(日) 13:40:14.17ID:3Uu/YUkP
>>464
もう1つ

import re

ABC = re.compile('abc')
s = 'xyzabcPQR'
m = ABC.search(s)
s[:m.start()] # xyz
s[m.end():] # PQR
04694642014/09/14(日) 13:44:15.09ID:+tpH58Gc
ありがとうございます。

sの例が良くなかったかもしれませんが、
(.*)abc(.*)
だと、(正規表現がgreedyなため)最右のabcにマッチしてしまうのです。
s="aXbYcZabcDEFabcHIJ"
などというとき、左はaXbYcZ、右はDEF... と取り出す方法を探しています。
04704642014/09/14(日) 13:48:26.98ID:+tpH58Gc
>>468
この手がありましたか !
大変わかりやすいので、使いたいと思います。ありがとうございました。
0471デフォルトの名無しさん2014/09/14(日) 14:17:49.27ID:DRyo//L5
s.split('abc', 1)
0472デフォルトの名無しさん2014/09/14(日) 15:37:15.25ID:3Uu/YUkP
>>471
目的が文字列の分割だけならそれでOKだけど文字列メソッドのsplitはセパレータに正規表現を使えないのでre.split
↓
import re
re.split('abc', s, maxsplit=1)

Perlの正規表現の特殊変数の代替なら >>468 のマッチオブジェクトを使ってスライスするのが無難かな
それか二度手間だけどマッチして確認した後にre.split
04734642014/09/14(日) 21:36:44.44ID:+tpH58Gc
いろいろとありがとうございました。
re.split()を使うのも、きれいだと思いましたが、ただ、split()は、
re.split(r"abc","xyz")
のように、マッチしなくても値を返してしまうので、判定が難しく、
>>468 法で行こうと思います。
ありがとうございました。
0474デフォルトの名無しさん2014/09/14(日) 22:09:01.99ID:JKMJIKev
0xFFFFという数値からb'\xff\xff'というバイト列をつくりたいんですが
どのようにすればいいですか?
今は1バイトずつとりだしてbytes([0xff, 0xff])みたいにして作ってるんですが
もっといい方法ありませんか?
0475デフォルトの名無しさん2014/09/14(日) 22:20:03.03ID:FgYFu2VK
Pythonの正規表現には、前方または後方から、
最短または最長で一致、という機能は無いの?
0476デフォルトの名無しさん2014/09/14(日) 22:29:07.66ID:zLtoNInf
>>474
Python3.xのみ
>>> (0xffccaa).to_bytes(3, 'big')
b'\xff\xcc\xaa'
0477デフォルトの名無しさん2014/09/14(日) 22:35:06.61ID:JKMJIKev
>>476
こういうの探してました!
ありがとうございます
0478デフォルトの名無しさん2014/09/14(日) 22:51:14.51ID:gO6moQCP
>>475
他の言語でいいから、欲しい正規表現検索のコード書いてみて

何となく答えても、単語の意味が食い違いそうな気がしてならない
04794752014/09/15(月) 01:29:41.72ID:J5zOsfVv
>>478
>>469
>s="aXbYcZabcDEFabcHIJ"
>で、(正規表現がgreedyなため)最右のabcにマッチしてしまう

これを読んで、Pythonの正規表現には、前方または後方から、
最短または最長で一致、という機能は無いのかなと思っただけ
0480デフォルトの名無しさん2014/09/15(月) 01:50:35.09ID:uGBCfR31
>>479
non greedy 一致なら *? がある

けれど、要望の取得なら、
re.split(s)で、['aXbYcZ', 'DEF', 'HIJ'] が得られるが?
0481デフォルトの名無しさん2014/09/15(月) 01:57:13.92ID:QhVLGney
つうかさ、一通りドキュメント読んでから来いよと。
くだすれだからってなに質問してもいいわけじゃないよと。
0482デフォルトの名無しさん2014/09/15(月) 03:19:37.26ID:PuXt1P2q
>>> ABC = re.compile('(.*?)abc(.*)')
>>> m = ABC.search(s)
>>> m.start(), m.end()
(0, 18)
>>> m.group(0)
'aXbYcZabcDEFabcHIJ'
>>> m.group(1)
'aXbYcZ'
>>> m.group(2)
'DEFabcHIJ'
>>> ABC = re.compile('(.*)abc(.*?)')
>>> m = ABC.search(s)
>>> m.start(), m.end()
(0, 15)
>>> m.group(0)
'aXbYcZabcDEFabc'
>>> m.group(1)
'aXbYcZabcDEF'
>>> m.group(2)
''
>>> ABC = re.compile('(.*?)abc(.*?)')
>>> m = ABC.search(s)
>>> m.start(), m.end()
(0, 9)
>>> m.group(0)
'aXbYcZabc'
>>> m.group(1)
'aXbYcZ'
>>> m.group(2)
''
0483デフォルトの名無しさん2014/09/15(月) 03:49:27.13ID:byOIOgff
macにpygameをインストールしようと思って、このサイト(http://eimu-dev.hatenablog.com/entry/2013/03/05/210916)の通りにやりましたが、

pygame setup.py build のところで

error: command 'cc' failed with exit status 1

となってインストール出来ませんでした。

正しくインストールする方法を教えてください。
OS X 10.9.4です。

あとLibraryにFrameworksがなかったので、自分でmkdirで作ったんですけど大丈夫ですか?
0484デフォルトの名無しさん2014/09/15(月) 06:49:03.52ID:/z9Uo8Hl
>>481
超初心者スレで何言ってんだお前?
0485デフォルトの名無しさん2014/09/15(月) 16:06:07.30ID:Yn38ScJw
print int(float(111111111111111111111111111111111))
> 111111111111111115071913726050304

どうしたらいい?
0486デフォルトの名無しさん2014/09/15(月) 16:09:13.73ID:GI5SOlSu
どうしたいの?
0487デフォルトの名無しさん2014/09/15(月) 16:14:18.67ID:PuXt1P2q
>>485
http://jutememo.blogspot.jp/2008/09/python-3-float-decimal.html
http://piro-suke.hatenablog.com/entry/20070822/1187756537
0488デフォルトの名無しさん2014/09/15(月) 23:54:32.18ID:OAdSsJdN
def a(s, l=[]):
l.append(s)
return l

for i in range(7):
print(a(i))

これ実行すると
[0]
[0, 1]
[0, 1, 2]
[0, 1, 2, 3]
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4, 5]
[0, 1, 2, 3, 4, 5, 6]
ってなるのは何故ですか?
[0]
[1]
[2]
[3]
[4]
[5]
[6]
なると思ったのに
0489デフォルトの名無しさん2014/09/16(火) 00:02:12.57ID:pfOEMVAs
>>488
return l ← リスト
0490デフォルトの名無しさん2014/09/16(火) 00:11:08.16ID:+Ut5bl5+
>>488
Python だと、オプション仮引数への代入 l=[] は
(Ruby のように手続き a がコールされるたびではなく)
プログラムの実行開始時に1回だけ評価されるから
0491デフォルトの名無しさん2014/09/16(火) 00:35:51.35ID:WETulgbf
その情報ってドキュメントのどこに載ってますか?
0492デフォルトの名無しさん2014/09/16(火) 00:41:42.43ID:cG0GrrN4
>>491
http://docs.python.jp/3.3/reference/compound_stmts.html#function-definitions
太字で「デフォルトパラメタ値は関数定義が〜」の部分
0493デフォルトの名無しさん2014/09/16(火) 00:42:49.23ID:FKFqnJBn
>>490
知らなかった
http://ideone.com/vVGytn
0494デフォルトの名無しさん2014/09/16(火) 00:45:50.35ID:gOOnD5p7
>>492
ドキュメント中のそのページをどうやって見つけましたか?
0495デフォルトの名無しさん2014/09/16(火) 00:49:10.44ID:WETulgbf
勉強になりました
0496デフォルトの名無しさん2014/09/16(火) 00:55:20.05ID:O2mNZQJ7
じゃあ一度、引数指定して呼び出したら
次に省略して呼び出した時は前回の値が使われるのか?
0497デフォルトの名無しさん2014/09/16(火) 01:00:14.87ID:cG0GrrN4
>>494
ごく普通に「Python 言語リファレンス」から「関数定義」を探すだけ

>>496
ちがう
a.__defaults__ のタプルとしてデフォルトパラメタ値が記憶されている
呼び出しのたびにそこから値がコピーされるだけ
0498デフォルトの名無しさん2014/09/16(火) 01:03:49.79ID:WETulgbf
辞書を指定したらやっぱり同じようになったけど数値を指定しても引き継がないのはなぜですか?
リストとタプルと辞書限定ですか?

def a(n, l=0):
return n+l
print(a(1))
print(a(1))
print(a(1))

理想
1
2
3
現実
1
1
1
0499デフォルトの名無しさん2014/09/16(火) 01:07:48.97ID:FKFqnJBn
>>498
>return n+l
この段階でn+1というオブジェクトが生成されるから
0500デフォルトの名無しさん2014/09/16(火) 01:11:45.46ID:FKFqnJBn
明示的に第二引数を渡した場合
http://ideone.com/tvomMK
0501デフォルトの名無しさん2014/09/16(火) 01:23:27.04ID:WETulgbf
def a(n, l=0):
l += n
return l
print(a(1))
print(a(1))
print(a(1))
0502デフォルトの名無しさん2014/09/16(火) 01:24:32.28ID:WETulgbf
こうやってもリストとかと同じように値が使い回しになりませんでした
0503デフォルトの名無しさん2014/09/16(火) 01:24:54.05ID:cG0GrrN4
>>498
ミュータブルであるかイミュータブルであるかの違い
イミュータブルなオブジェクト(数値や文字列やタプルなど)は、生成後に内容を書き換えることができない
一方、ミュータブルは(リストや辞書など)は、生成後でも内容を書き換えができる
i = 1
i = 2
これは一見内容を書き換えてるように見えるけど
実際は別のオブジェクトに差し替えている(内容書き換えではない)
0504デフォルトの名無しさん2014/09/16(火) 01:31:33.44ID:WETulgbf
そういうふうになってるんですね
ありがとうございます
0505デフォルトの名無しさん2014/09/16(火) 01:32:12.86ID:cG0GrrN4
>>502
l_default = 0
def a(n):
 l = l_default
 l += n
 return l
print(a(1))
print(a(1))
print(a(1))
こんな風に書き直せば理解でしやすいと思う

l_default = []
def a(s):
 l = l_default
 l.append(s)
 return l
print(a(1))
print(a(2))
print(a(3))
0506デフォルトの名無しさん2014/09/16(火) 01:48:27.25ID:BeTOb36k
def gen(l=0):
&nbsp;while True:
&nbsp;&nbsp;yield l
&nbsp;&nbsp;l += 1

def a(n, g=gen()):
&nbsp;return n + g.next()

print(a(1))
print(a(1))
print(a(1))

理想
1
2
3
現実
1
2
3
0507デフォルトの名無しさん2014/09/16(火) 14:04:51.28ID:D2tcSPbj
いまPython関連のツイートでPython2 vs Python3みたいな流れがありますけど
このスレの先輩方はどっち推しですか?
ぼくはPythonを学ぼうと思った時に新しいバージョンがPython3.2だったのでPython3をメインに使ってます
0508デフォルトの名無しさん2014/09/16(火) 14:39:21.04ID:0isfMR1I
馬鹿はほっとけ

ぶっちゃげPython実装組にとってはどっちでも良いと言っている
両方のいいとこ取りして4を出すという選択しもあるんだから、とりあえずどうしたいかをコミュニティで発信してくれとのこと
外野で騒いでる馬鹿はほっておいてMLにどうしたいかを投げるべき
0509デフォルトの名無しさん2014/09/16(火) 14:46:10.28ID:dhQsu6oC
Twitterでデカい声挙げてるのって
承認欲求と凄い一体感に狂ったバカしかいねえからな
0510デフォルトの名無しさん2014/09/16(火) 18:03:46.91ID:wJwy3ubh
新しく始めるなら3にしない理由は皆無だわ
昔から使っていて過去の資産があるなら3にする必要性は皆無だわ
0511デフォルトの名無しさん2014/09/16(火) 18:35:16.33ID:mfOy9iYG
3ではじめたけど2.7までしか対応していない外部ライブラリにざらに当って
非公式のやつをインストしているから不安感はある
0512デフォルトの名無しさん2014/09/16(火) 18:43:37.55ID:dhQsu6oC
nlpとかsvmとか
学者が研究成果として公開してるような奴は基本放置だよね
彼らはセキュリティとかサポートとか関係ねえからな
0513デフォルトの名無しさん2014/09/16(火) 18:52:24.11ID:QijYUKeu
scipyが3.4でも動くので助かってる
0514デフォルトの名無しさん2014/09/16(火) 18:53:04.31ID:RmEmlo0B
GoogleAppEngineでさえ3への対応は10年後とからしいしね
0515デフォルトの名無しさん2014/09/16(火) 19:01:18.21ID:dhQsu6oC
公式がCPython2のサポート切ったって
誰かがサポート続けるだろうし何の問題もないと思うけどね
むしろ何を心配してるんだか
0516デフォルトの名無しさん2014/09/16(火) 19:06:45.67ID:AJgGs2AR
>>514
Google Apps の Python API も
見捨てられた感ありあり
0517デフォルトの名無しさん2014/09/16(火) 19:53:30.56ID:QijYUKeu
GAEはおわこん
時代はopenshift
0518デフォルトの名無しさん2014/09/16(火) 21:39:23.11ID:jNa9hdfc
>公式がCPython2のサポート切ったって
>誰かがサポート続けるだろうし何の問題もないと思うけどね
>むしろ何を心配してるんだか

そんな暇な奴はいないし、どこの誰だかわからん奴がサポートしても使えない
0519デフォルトの名無しさん2014/09/16(火) 21:55:47.81ID:PrDIKP1S
暇な奴がいるじゃねえか
どこの誰ってか法人でやってる奴が
0520デフォルトの名無しさん2014/09/16(火) 22:00:31.57ID:HdFIBRgS
どこの誰だかわからん奴がサポートしても使えないし、
OpenSSL並みに有名なら実装がゴミでもクズでもOKという不可思議な業界。
0521デフォルトの名無しさん2014/09/16(火) 22:07:59.00ID:a5PZ175E
Guidoが居るDropboxのコードベースが
Python2に依存しまくってるらしいんだよなぁ
0522デフォルトの名無しさん2014/09/16(火) 22:25:29.69ID:xheLKUX2
>>521
そのソースどこにあるか教えて
0523デフォルトの名無しさん2014/09/16(火) 23:08:56.52ID:lrhjfC4+
Python3限定でwebフレームワークでいいのが出たら絶対にpython2の人気は消える
railsに見習え
0524デフォルトの名無しさん2014/09/16(火) 23:26:02.08ID:4GlNhcXA
海外のPython関連の新刊書籍はPython 3で書かれているし、緩やかに移行していくでしょ
大学の講義でPython 3が使われて、そこから新たな開発者が生まれて…
0525デフォルトの名無しさん2014/09/17(水) 01:49:46.48ID:r6QqAGtE
>>511
そんないまだに3に対応出来てないライブラリをなんで使うのかと、そういう話だよ。

>>514
Googleはもうこれ以上Pythonに関わり合いたくないって感じがプンプンするけど。
0526デフォルトの名無しさん2014/09/17(水) 07:58:01.57ID:rTfH0K+p
Googleって自分の言語何個も作ってたよな
0527デフォルトの名無しさん2014/09/17(水) 10:43:12.69ID:k7ATJ22m
pythonでGoogle使うのは妨げてる訳ではない
0528デフォルトの名無しさん2014/09/17(水) 12:46:05.75ID:YmAby2mX
scipyの使い方がわからないので自分で調べて記事に書いたら誰かがこうしたほうがいいよとか親切に教えてくれますか
0529デフォルトの名無しさん2014/09/17(水) 13:15:40.84ID:J7Xb/w8k
ブログに書いてコメント許可すればどこかの暇人が書いてくれるかもね。
0530デフォルトの名無しさん2014/09/17(水) 13:27:03.64ID:VxgzEsby
そんな夢の様な事をしてくれる方がいるなら俺も書きたいわ
現実はきついのではないかなあ・・・
0531デフォルトの名無しさん2014/09/17(水) 14:11:47.40ID:or6PO8CM
つぶやいたーと組み合わせるとちょっとだけ確率が増える
0532デフォルトの名無しさん2014/09/17(水) 20:19:57.82ID:G4POkF8M
stack exchange に beta だけど code review ってのがあるから
用途によっては使ってみるといいかもしれない
0533デフォルトの名無しさん2014/09/18(木) 00:56:31.91ID:hBulv5ba
python 文法詳解
http://www.amazon.co.jp/dp/4873116880/

この本オライリー本だけどamazon.comでは扱ってない
日本だけの出版なのかな?
著者も日本人だけど
0534デフォルトの名無しさん2014/09/18(木) 01:12:33.79ID:spxgJ8Ad
>>533
そうなの?珍しいな
0535デフォルトの名無しさん2014/09/18(木) 01:17:30.54ID:jNFP3P67
日本人が書いたプログラミング系の書籍ってどれくらいの割合で英訳されるんですんかね。
0536デフォルトの名無しさん2014/09/18(木) 05:50:05.02ID:xGrJvmYs
ND
0537デフォルトの名無しさん2014/09/18(木) 06:11:05.32ID:TAWLJUCR
ネットで読める良い解説書ってありませんか?
0538デフォルトの名無しさん2014/09/18(木) 06:18:52.82ID:xGrJvmYs
お前のレベルに合わせて書かれたものが良い解説書であるならば
そんなものは自分で探すしかないに決まってるだろう
0539デフォルトの名無しさん2014/09/18(木) 07:20:35.18ID:j0A0R3ie
これはひどい
0540デフォルトの名無しさん2014/09/18(木) 07:54:08.55ID:0Nh6uZW9
>>533
電子書籍って出るの遅いんだっけ?
0541デフォルトの名無しさん2014/09/18(木) 09:45:54.61ID:NE4RReH8
ステマ?
0542デフォルトの名無しさん2014/09/18(木) 11:05:01.99ID:spxgJ8Ad
技術書ステマしたところで、、、っていう
増刷するのなんて皆無だしな
0543デフォルトの名無しさん2014/09/18(木) 12:42:26.02ID:0+D2RILR
ステマ言いたい年頃なんでしょ
0544デフォルトの名無しさん2014/09/18(木) 13:24:29.13ID:M8giSVcf
python2とpython3どっちがいいっていうのはこのスレでも昔出てたのに何で今さらTwitterで話題になっているんですか?
やっぱりこのネタに乗っかって今ブログで記事書いてる人たちは売名行為と捉えてもいいですか?
0545デフォルトの名無しさん2014/09/18(木) 13:58:39.94ID:aq/nB7oQ
>>544
PyCon が原因
0546デフォルトの名無しさん2014/09/18(木) 14:28:37.33ID:mq0MWg2t
で今は2系と3系のどっちが人気なの?
3系を基本使わないからわからないけど
3系のライブラリは充実してきてるんだろうか?
0547デフォルトの名無しさん2014/09/18(木) 15:13:12.73ID:NVU0pS4g
3系のライブラリは徐々にだけど確実に充実してきてる。
だけど、「もう3にしか対応しないぜ。2使っている奴は死ね」と宣言した大型ライブラリはまだない。

なので、2で不便しないんだったら、現時点では2のままでいい。
自分が依存しているライブラリが3対応した時が、移行のチャンスなので、期を逃さずガッツリ行けばよろし。
0548デフォルトの名無しさん2014/09/18(木) 15:53:22.90ID:lsy6YbFy
3使う意味ないって言いきっちゃったからなぁ
0549デフォルトの名無しさん2014/09/18(木) 20:37:05.51ID:QMEFfhZi
>>548
既に2を使っている学者の方なんかだと言いそうだ
移行するメリットが殆ど無いだろうし

ただ3のほうが好き
目的の外部ライブラリがああって度々なるけど
0550デフォルトの名無しさん2014/09/18(木) 21:38:00.67ID:AwaPjQog
まだ早いけど
いずれPythonからGoへ乗り換えようと思ってる人いる?
googleはGoに移行させるつもりらしいけど
ロッサムさんはどーするんだろ?
0551デフォルトの名無しさん2014/09/18(木) 22:02:19.36ID:nWRbnh4O
最近Python勉強し始めたばっかの素人だけど3.x系はもう手放したわ
画像処理やろうと思ったら全然ライブラリ読みこめないでやんの
0552デフォルトの名無しさん2014/09/18(木) 22:02:26.19ID:wtHp+It3
長文失礼します
pythonのアプリケーションを配布する一般的な方法にはどんなものがありますか?
主にpythonはすでにインストールしてるけど使ってるモジュールはおそらくまだインストールしてないよって人向けに配布したいです
まだ始めて三日目なんで良くわかってませんが教えていただけるとありがたいです
0553デフォルトの名無しさん2014/09/18(木) 22:12:47.05ID:wr8Yj4P+
goよりrustの方が良さそう
どっちもよく知らないけど
0554デフォルトの名無しさん2014/09/18(木) 22:32:52.37ID:uiaacVZe
>>550
ファンロッサムはだいぶ前にDropboxに引きぬかれとるがな
0555デフォルトの名無しさん2014/09/18(木) 23:37:33.68ID:J4t3dbmZ
>>552
https://packaging.python.org/en/latest/
0556デフォルトの名無しさん2014/09/19(金) 00:19:08.14ID:4MFyD/0d
>>551
もうそれ言語の選択間違ったって話じゃないの
0557デフォルトの名無しさん2014/09/19(金) 00:49:02.87ID:RhOL7tnE
>>556
画像処理のためにPythonを勉強するんじゃなくて
Pythonの勉強の題材に画像処理をしてるだけだよ
0558デフォルトの名無しさん2014/09/19(金) 00:54:02.54ID:6gllmAz9
勉強ならそのライブラリを3系に移植するのが手っ取り早い
0559デフォルトの名無しさん2014/09/19(金) 00:56:58.81ID:V5mbqdwI
てっとり早くはないだろうな
画像処理のライブラリならなおさら
0560デフォルトの名無しさん2014/09/19(金) 01:01:32.15ID:RhOL7tnE
>>558
Python3に対応したライブラリのバージョンはまだα版なのを公式で確認済み
よって2を使う方がベターと判断した
0561デフォルトの名無しさん2014/09/19(金) 01:06:13.44ID:4MFyD/0d
>>557
じゃあ題材の選択を間違ったってことでは?
もしくはPythonはそので間違いだと言われる程度の言語なんです、ってとこ。
Pythonは世界レベルのスクリプト言語ではマジョリティだけど、2→3の不安定性で、
いったんなにかでコケると一気にシェア失いそうな感じするしね。
05625612014/09/19(金) 01:08:50.04ID:4MFyD/0d
>>561
s/もしくはPythonはそので/もしくはPythonはその程度で/
0563デフォルトの名無しさん2014/09/19(金) 01:24:51.76ID:F4B/nS5T
2->3の移行時に発生するstr, bytes, unicode関連のエラーは
Pythonが静的型付言語だったら簡単に見つける事が出来たし、
もっと早く簡単に2->3移行は完了したと思う

というわけなので、Python3.5で静的型検査を標準に入れて
一気に2->3移行を進める戦略ですよ
0564デフォルトの名無しさん2014/09/19(金) 01:28:40.43ID:b8dB9fZU
>>555
ありがとうございます
0565デフォルトの名無しさん2014/09/19(金) 07:36:19.13ID:29l2E3/T
>>560
勉強って何してんの?
OpenCVなんかで乳首の検出とか?
0566デフォルトの名無しさん2014/09/19(金) 07:39:11.21ID:uOFecdUA
×ライブラリが3に対応するまで2を使う
○3に対応したライブラリに移行する
0567デフォルトの名無しさん2014/09/19(金) 08:12:12.55ID:OJCIiOtw
◎3に対応しらライブラリを実装する
0568デフォルトの名無しさん2014/09/19(金) 13:14:06.89ID:QRiIEsK8
必要なパッケージが3似対応してるので3で困ることはない
scipy関連
django
0569デフォルトの名無しさん2014/09/19(金) 19:34:06.61ID:eMbosikE
rubyのbundleみたいなのないですか?
0570デフォルトの名無しさん2014/09/19(金) 22:06:03.59ID:RhOL7tnE
>>565
乳首じゃないけどOpenCVだよ
0571デフォルトの名無しさん2014/09/19(金) 22:17:33.12ID:Hrwgc7MY
>>570
そこはSPIDERです。と言えばカッコ良いのに

オリジナルSPIDERはFORTRANのライブラリ
0572デフォルトの名無しさん2014/09/19(金) 22:58:06.47ID:J2BT5uph
Python - OpenCVによる猫の識別
ttp://qiita.com/wellflat/items/0b6b859bb275fd4526ed

人間の男女の違いやあれやこれやも識別できるぞ!
0573デフォルトの名無しさん2014/09/20(土) 10:29:30.54ID:Xc99Cp2d
os.path.dirname(os.path.dirname(__file__))

某フレームワークが吐くコードです
2回かましているのは何故ですか?
0574デフォルトの名無しさん2014/09/20(土) 10:55:19.69ID:/lSmgJEc
>>573
なぜ自分で手を動かさない?

__file__ が 'c:\\xxx\\yyy\\zzz' なら、
1回目の dirname で 'c:\\xxx\\yyy'
2回目の dirname で 'c:\\xxx' と、
目的とする結果が異なるからだろ
0575デフォルトの名無しさん2014/09/20(土) 11:21:04.06ID:ldpx+vMK
>>> path = "c:\\"
>>> os.path.dirname(path)
''
>>> os.path.dirname(os.path.dirname(path))
''
>>> os.path.dirname(os.path.dirname(os.path.dirname(path)))
''
>>> path
'c:\\'

なぜです?
0576デフォルトの名無しさん2014/09/20(土) 11:24:05.29ID:mVPfJUJ8
なぜですって何がだ?
お前はどうなると思ったんだ?
0577デフォルトの名無しさん2014/09/20(土) 11:30:28.61ID:mVPfJUJ8
たぶんDjangoのsettings.pyの13行目あたりのことを言ってる気がするが
あれはProjectRootを取るためのコードだから1回でも3回以上でも目的は達成できん
何故と聞くまでもないだろう
0578デフォルトの名無しさん2014/09/20(土) 11:35:25.80ID:kGUmhIam
>>572
あれやこれの識別の妄想が広がるな!
0579デフォルトの名無しさん2014/09/20(土) 11:42:15.02ID:GbFNl7YA
正しくは
os.path.join(os.path.dirname(__file__), '..')
じゃないの
0580デフォルトの名無しさん2014/09/20(土) 11:48:46.84ID:pPLj1Lyk
この場合の正しさってなんだろうか。
0581デフォルトの名無しさん2014/09/20(土) 12:09:01.44ID:nsNkzdES
djangoの翻訳チームのやる気の無さ
https://github.com/django-docs-ja/django-docs-ja
0582デフォルトの名無しさん2014/09/20(土) 12:18:59.07ID:GbFNl7YA
気に入らないなら
forkすれば良い
0583デフォルトの名無しさん2014/09/20(土) 12:21:33.60ID:mVPfJUJ8
こういう奴はリーダー代われ
俺の箔にしてやるって言い分だから
forkなんかしない
0584デフォルトの名無しさん2014/09/20(土) 12:25:47.32ID:nsNkzdES
phpのlaravelの翻訳は1人で全部やってる
http://laravel4.kore1server.com/docs

djangoの翻訳チームが名ばかりの集まりであるのがよく分かるだろう
我々はこういうった幽霊部員の活動を日本中に広めなければならない
0585デフォルトの名無しさん2014/09/20(土) 12:26:39.32ID:nsNkzdES
ということで今からオレは新しく1.7の翻訳アカウントを作ろうと思う
0586デフォルトの名無しさん2014/09/20(土) 16:17:38.30ID:5yN8V4kh
フレームワークなんて使ってねーや
0587デフォルトの名無しさん2014/09/20(土) 17:31:55.11ID:J22kYW6o
_future_モジュールはなんのためにありますか?
以前のバージョンでも未来の機能を利用できると理解したのですが
0588デフォルトの名無しさん2014/09/20(土) 21:08:05.13ID:lJJn8OIz
>>587
__future__モジュールについてはこれな
>これは実行できる形式で書かれたドキュメントなので、�__future__�Cンポートしてその中身を調べることでプログラムから調査することができます。
http://docs.python.jp/2/library/__future__.html

future文についてはこれ
http://docs.python.jp/2/reference/simple_stmts.html#future
古いバージョンのでも新しい機能が使えるってことであってる
0589デフォルトの名無しさん2014/09/20(土) 21:58:57.26ID:J22kYW6o
残念ながらはっきりとは理解できませんでした
スクリプト言語にコンパイラやコンパイル時という単語がなぜ出てくるのでしょう?
未知の機能の詳細を実行時に取得してプログラムの動きを変化させると考えました
役割としてはCにおけるマクロのようなものと理解すればいいのでしょうか?
0590デフォルトの名無しさん2014/09/20(土) 22:26:14.09ID:Z8uHc6Vb
>>589
そうディレクティブです、でもマシンコードじゃなくバイトコードへのコンパイル
実行前というか、たとえば「from __future__ import division」だと除算が
BINARY_DIVIDEからBINARY_TRUE_DIVIDEになり整数同士でも切り捨てられない
0591デフォルトの名無しさん2014/09/20(土) 22:51:00.81ID:J22kYW6o
なるほど
機能の追加をよりコントロールしようとしているんですね
回答ありがとうございます
0592デフォルトの名無しさん2014/09/21(日) 00:40:09.97ID:1T8PQZp1
a = [{"a":''}] * 3
a[0]['a'] = True
print(a)

何故0番目以外にもTrueが入っちゃうんですか?
0593デフォルトの名無しさん2014/09/21(日) 00:52:02.80ID:hzBq2+VL
シャローコピーだから
0594デフォルトの名無しさん2014/09/21(日) 01:17:39.11ID:+wLRSH8e
新刊の「Python詳説」を立ち読みしてみたけど
3系だった
2系の俺には無用w
0595デフォルトの名無しさん2014/09/21(日) 01:19:29.41ID:hzBq2+VL
わざわざ3系オンリーの書籍を出すなんてボランティアか、はたまたマゾか
0596デフォルトの名無しさん2014/09/21(日) 01:27:50.32ID:WJzN6dNr
一向に3への移行が進まないよか良いでしょう
0597デフォルトの名無しさん2014/09/21(日) 01:55:56.04ID:SxMm3UZZ
いまどき2用の書籍出すとかマゾな出版社でしかない。
0598デフォルトの名無しさん2014/09/21(日) 03:12:58.79ID:zvLDGmjJ
Python文法詳解の目次を見たらみんなのPythonやパーフェクトPythonと内容が被ってる気がして買う気になれませんでした。web関連の本を出してくれたらいいのに。
0599デフォルトの名無しさん2014/09/21(日) 03:59:03.40ID:hzBq2+VL
あっという間に陳腐化するわ
特定フレームワークのユーザーしか狙えないわ
書いてる方は幸せになれません
0600デフォルトの名無しさん2014/09/21(日) 09:20:08.00ID:MEucGXRm
どうしても解決できないことがあるので質問させてください。
以下のように、テキストファイル(test.txt)を作成してから、それを読み出して、printしているのですが、
何も表示されません。テキストファイルは確かに作成されています。
ファイルが作成される前に、読み出しがされているからでしょうか?

#!/usr/bin/python
# -*- coding:utf-8 -*-

str_out = "aaa"

fw = open("test.txt", "w") #
fw.write(str_out)
fw.close

fr = open("test.txt")
str_read = fr.read()
print str_read
fr.close()
0601デフォルトの名無しさん2014/09/21(日) 09:23:00.69ID:q4aLc9F7
一番目の close にカッコがついてないよ
それだと関数オブジェクトを呼ばずに捨ててる
0602デフォルトの名無しさん2014/09/21(日) 09:23:19.24ID:NKaa3KrO
fw.close()
0603デフォルトの名無しさん2014/09/21(日) 09:25:16.62ID:MEucGXRm
>>601
うぉー、出来ました!
実はこれで1年以上、悩んでいました。
なんで早く教えてくれなかったんですか!
ありがとうございました!
0604デフォルトの名無しさん2014/09/21(日) 09:26:49.52ID:NKaa3KrO
なんで早く聞かなかったんですか!
0605デフォルトの名無しさん2014/09/21(日) 10:23:27.12ID:hzBq2+VL
白ヤギさんも真っ青
0606デフォルトの名無しさん2014/09/21(日) 10:31:44.53ID:sF3yzrHK
with使えばファイルの閉じ忘れ起きないし安心
0607デフォルトの名無しさん2014/09/21(日) 10:34:13.13ID:Re05AqUv
何で早くエスパーしなかったんですか!
0608デフォルトの名無しさん2014/09/21(日) 10:35:33.02ID:OYwJke1V
その点 ruby は安心
0609デフォルトの名無しさん2014/09/21(日) 11:57:06.57ID:7oG58F6s
>>592
間際らしい市ねww
a = [{'a':''}] * 3
a = [{"a":""}] * 3
0610デフォルトの名無しさん2014/09/21(日) 12:07:42.60ID:tmQCWq8V
シャローコピーしないようにするにはどうしたらいいですか?
0611デフォルトの名無しさん2014/09/21(日) 12:10:51.59ID:Gd2LPy9W
Web関連の本って...
無理だと思うな
PythonはPHPにはその分野では敵わない
面倒くさすぎる
Djangoも分かりにくい
PHPならHTML書いて入れればそれだけでOK
0612デフォルトの名無しさん2014/09/21(日) 12:19:06.39ID:tmQCWq8V
djangoは管理画面があるのが便利だけど最初の設定が面倒くさい
templateやstaticの設定をもっと自動化して欲しい
0613デフォルトの名無しさん2014/09/21(日) 12:32:32.35ID:Vmt4LZ6D
WEB関係の本は「みんなのPython Webアプリ編」があるけど
なんか読みにくい本なんだよな
オライリーのいい本が一冊翻訳されるといいのに
0614デフォルトの名無しさん2014/09/21(日) 12:32:58.96ID:hzBq2+VL
・サブディレクトリ運用を気軽にできるようにしてくれ
・アプリケーションのリネームをサポートしろ
は前に要望したけど音沙汰がない
0615デフォルトの名無しさん2014/09/21(日) 12:34:17.01ID:hzBq2+VL
翻訳されていないオライリーのいい本が一冊はあるという前提が甘い
0616デフォルトの名無しさん2014/09/21(日) 12:38:59.98ID:D9Ow4XI3
Python Web Programming

http://www.amazon.com/dp/0735710902/


こういうの翻訳頼む
0617デフォルトの名無しさん2014/09/21(日) 12:41:39.37ID:hzBq2+VL
出版が2002年だけど本当にそれでいいのか
0618デフォルトの名無しさん2014/09/21(日) 12:49:39.02ID:ImbjJwoQ
確かにちょっと古いかな

Flask Web Development: Developing Web Applications with Python

これとかどうだろう
今年出版されたばかり
0619デフォルトの名無しさん2014/09/21(日) 12:51:25.89ID:q4aLc9F7
>>610
import copy; copy.deepcopy
あとリストの掛け算はシャローコピーではないよ
0620デフォルトの名無しさん2014/09/21(日) 12:56:54.05ID:tmQCWq8V
>>619
ライブラリを使わないとだめってことは掛け算で作るのは王道の書き方ではなかったってことですよね
掛け算するのやめます
0621デフォルトの名無しさん2014/09/21(日) 12:57:58.05ID:tmQCWq8V
>>614
rm -rf アプリケーションじゃだめなんですか
0622デフォルトの名無しさん2014/09/21(日) 13:10:09.64ID:hzBq2+VL
リネームだっつってんのに何故rmが出てくる

Djangoのアプリケーションをリネームするには
散らばってるインポートモジュール名とDBのテーブル名とリレーション等と格納された値を修正する必要がある
rmでこれらの処理を何か簡略化できるか?
0623デフォルトの名無しさん2014/09/21(日) 14:15:07.00ID:tmQCWq8V
rm -rf dbファイル アプリケーション
 python manage.py migrate
0624デフォルトの名無しさん2014/09/21(日) 14:24:39.29ID:M1R/hzos
bottleなんかマニュアルしっかりしてるし本なんかいらんだろ
0625デフォルトの名無しさん2014/09/21(日) 15:18:42.67ID:zvLDGmjJ
デプロイがつらいのでApache、Nginx、uwsgi、Gunicornなどでの設定方法を解説した本であれば薄っぺらくてもすごく助かります。
0626デフォルトの名無しさん2014/09/21(日) 16:11:32.53ID:GSgALpqv
>>610
[{"a": ""} for _ in range(3)]

ちなみに辞書の複製にcopyモジュールはいらないよ
un = {}; un.copy()
これでおk
辞書の中身もちゃんとコピーしたいのなら>>619のようにやらないとだけど
0627デフォルトの名無しさん2014/09/21(日) 18:36:28.08ID:SV7gYkDR
bottle , flask , pyramid はフルスタックじゃないから
簡単なものならよいがちょっと込み入ったものになると
初心者には厳しいと思う

だけど上記の3フレームワークでよく使われる
jinja2 や SQLAlchemy や Beaker は覚えておくと
なにかと便利
0628デフォルトの名無しさん2014/09/23(火) 01:38:35.31ID:yyfnOWbn
http://tokyometro10th.jp/

これみんなで参加しないか?
Pythonのポテンションを世に知らしめるのだ
0629デフォルトの名無しさん2014/09/23(火) 01:44:27.98ID:ESMlqDPF
>>628
お前さんは知らないかもしれないが、世界レベルではPythonはマジョリティです。
0630デフォルトの名無しさん2014/09/23(火) 01:48:50.46ID:6GOHYDXZ
>>629
日本ではPythonはマイノリティですから
0631デフォルトの名無しさん2014/09/23(火) 01:53:20.60ID:ESMlqDPF
>>630
ガラパゴス乙
0632デフォルトの名無しさん2014/09/23(火) 13:06:03.58ID:h9MTRV8P
ガラパゴス島でガラパゴスガラパゴス騒いだ所で何も変わらんよ異邦人君
0633デフォルトの名無しさん2014/09/23(火) 13:08:25.49ID:KtYSsO04
自分で返しがズレてるなとか思わないのかな
実際rubyが優勢だろうQiitaとかもrubyタグ圧倒的だし
0634デフォルトの名無しさん2014/09/23(火) 13:12:10.78ID:SOSbun4M
タグが多ければ優秀というのは何故か?
母集団は?
0635デフォルトの名無しさん2014/09/23(火) 13:36:59.37ID:n40GWKtf
般 僧 掲 若 咒 咒 菩 波 夢 罫 依 智 老 識 色 無 垢 舎 空 利 時 観  摩
若 掲 諦 波 能 是 提 羅 想 礙 般 亦 死 界 声 受 不 利 空 子 照 自  訶
心 諦   羅 除 大 故 蜜 究 故 若 無 亦 無 香 想 浄 子 即 色 見 在  般
経   掲 蜜 一 明 知 多 竟 無 波 得 無 無 味 行 不 是 是 不 五 菩  若
   菩 諦 多 切 咒 般 故 涅 有 羅 以 老 明 觸 識 増 諸 色 異 蘊 薩  波
   提   咒 苦 是 若 得 槃 恐 蜜 無 死 亦 法 無 不 法 受 空 皆 行  羅
   薩 波 即 真 無 波 阿 三 怖 多 所 尽 無 無 眼 減 空 想 空 空 深  蜜
   婆 羅 説 実 上 羅 耨 世 遠 故 得 無 無 眼 耳 是 相 行 不 度 般  多
   訶 掲 咒 不 咒 蜜 多 諸 離 心 故 苦 明 界 鼻 故 不 識 異 一 若  心
     諦 曰 虚 是 多 羅 佛 一 無 菩 集 尽 乃 舌 空 生 亦 色 切 波  経
         故 無 是 三 依 切 罫 提 滅 乃 至 身 中 不 復 色 苦 羅
     波   説 等 大 藐 般 顛 礙 薩 道 至 無 意 無 滅 如 即 厄 蜜
     羅   般 等 神 三 若 倒 無 侘 無 無 意 無 色 不 是 是 舎 多
0636デフォルトの名無しさん2014/09/23(火) 14:41:45.52ID:nsMEHxF9
なつかしいコピペ
0637名無しさん2014/09/24(水) 17:12:16.88ID:Qh5bz0XT
LinuxでPython2.6使ってるけど、WindowsでPython使う際に2.7にしてもいいのかなと思ったり
やっぱ2.6から2.7に上げた場合、それまでのスクリプトで問題発生するかな?
0638デフォルトの名無しさん2014/09/24(水) 17:31:42.36ID:5Qd2IKk/
Pythonでデスクトップアプリケーションを作成する場合、どういう風にすれば良いのでしょうか?
PyQtやwxPythonなどあるようですが、PyQtは敷居が高いようなことが書かれています
デザインのしやすさ、作りやすさなどでオススメを教えていただきたいと思います
自分の環境はRedhat系ですが、Windowsでの利用を考えています

http://ja.m.wikipedia.org/wiki/Pythonを使っている製品あるいはソフトウェアの一覧
このようなページを見つけました
ここに載っているデスクトップアプリケーションはPyQtなどで作られているのでしょうか?
それともCやWindowsAPIなどで基本的に作って、中身の一部をPythonで作っているのでしょうか?
0639デフォルトの名無しさん2014/09/24(水) 17:36:50.62ID:FHhM1wc8
Tkがおすすめ
0640デフォルトの名無しさん2014/09/24(水) 17:37:17.50ID:LEs4bhE4
>>637
発生するかしないかで言えば発生しないとは言えない
0641デフォルトの名無しさん2014/09/24(水) 17:39:21.38ID:LEs4bhE4
>PyQtは敷居が高い

それはない
ライセンスの問題とか
メンテが放置とか
面倒なだけ

問題にかかわってる暇がないなら
wxPythonの方を薦める
0642デフォルトの名無しさん2014/09/24(水) 18:43:17.39ID:5Qd2IKk/
教えてくれてありがとうございました
0643デフォルトの名無しさん2014/09/24(水) 21:37:03.17ID:wvIaX7qe
配布用に.exe形式にしたいのだけど、.exeの1ファイルだけにおさめる方法ってあるかね
py2exeでは、スクリプト以外のファイルはまとめてくれなさげ
0644デフォルトの名無しさん2014/09/24(水) 22:01:12.95ID:YFHZqPQu
zipじゃだめなん?Inno setupとかは?
0645デフォルトの名無しさん2014/09/24(水) 22:31:16.72ID:wvIaX7qe
説明不足ですまん
インストーラとしてではなくて、そのまま実行できるアプリケーションとしたい。

もう少し具体的な意図を言うと、画像等の素材を隠蔽したい。
ただ、身内に配る程度なので、そこまで高度に隠蔽される必要もない

.exeにまとめるのでなくても、暗号化ファイルを読み込む方法などあれば、それでも問題なし
見栄えや扱いの簡便さで、.exeにまとめるのが一番良いかと思ってただけなので

# しかし、書いてくれたそれはそれで別の機会に使えそうだ。ありがとう
0646デフォルトの名無しさん2014/09/24(水) 22:33:00.91ID:vnMOPx27
ウイルス?
0647デフォルトの名無しさん2014/09/24(水) 22:34:42.27ID:wvIaX7qe
いいえ
0648デフォルトの名無しさん2014/09/24(水) 22:48:20.90ID:YFHZqPQu
鍵付きZIPファイルに格納する、zipfileライブラリで読みこむ、tmpファイルとして
出力するときに拡張子でばれないよう注意する。

使い終わったらちゃんと消去。
0649デフォルトの名無しさん2014/09/24(水) 23:06:51.74ID:spov7QuU
ぐぐるとpy2exeとNSISで1ファイルにまとめた例が出てくるよ
おそらくcxfreezeでもできるはず
0650デフォルトの名無しさん2014/09/24(水) 23:25:30.42ID:wvIaX7qe
>>648
ありがとう、調べてみる

>>649
それもインストーラとしてまとめる方法では?
アプリケーション本体としてもまとめられるのかな?
0651デフォルトの名無しさん2014/09/25(木) 05:16:39.47ID:7DgNS8tq
UPX
0652デフォルトの名無しさん2014/09/25(木) 06:28:33.30ID:joYUKpd7
>>650
NSISも元来インストーラを作るツールだけど
設定で一時フォルダに展開して実行までやってくれる
見た目1ファイルのexeが作れるのよ
0653デフォルトの名無しさん2014/09/25(木) 07:54:31.41ID:A59aTWuy
pyinstallerつかってたけど
一つのファイルだとpython.dll
やwxPython含めて13MBぐらいになって
ユーザーから不評でした。

そして数年後この度、リファクタリングついでにC#で作り直し。はぁ...
0654デフォルトの名無しさん2014/09/25(木) 08:12:01.51ID:Subxhchr
死ねば作り直さなくていいぞ〜
疲れてるならオススメ
0655デフォルトの名無しさん2014/09/25(木) 08:14:49.29ID:PQH/RCDK
兵糧攻め
0656デフォルトの名無しさん2014/09/25(木) 09:45:09.99ID:n/hqnqxg
だからqtつかおうよ!
0657デフォルトの名無しさん2014/09/25(木) 09:50:37.18ID:PQH/RCDK
PyQt より PySide の方が良いんだよね?
0658デフォルトの名無しさん2014/09/25(木) 09:52:42.20ID:n/hqnqxg
py付いちゃうとexe化出来ないじゃん。。。
pyqt, pyside書けるならqtも書けるよ
0659デフォルトの名無しさん2014/09/25(木) 10:02:09.42ID:PQH/RCDK
python スレだから PyHoge の話になるのは仕方ない
0660デフォルトの名無しさん2014/09/25(木) 16:05:12.92ID:UivmCkMy
>>651>>652
ほうほうなるほど
ありがとうありがとう

>>653
オプションで同梱モジュール選べなかったのかね
0661デフォルトの名無しさん2014/09/25(木) 19:14:07.19ID:pla+jS26
>>660
python.dllで2mbは確定でwxで10MBだったかな。module同梱は自動検出。
py2exeもつかってたけどでかさは変わらんかった気がする。

GUIというとvensterとctypesでガリガリ書いてたときもあったなぁ...
0662デフォルトの名無しさん2014/09/26(金) 21:02:12.22ID:HIA/sQJr
Passenger全死亡か
http://d.hatena.ne.jp/nekoruri/touch/20140926/shellshock

ワロテナイよ
0663デフォルトの名無しさん2014/09/26(金) 23:53:15.81ID:UKsTMeRj
>>662
Rubyの話題はスレ違い
0664デフォルトの名無しさん2014/09/27(土) 02:57:10.07ID:jYunIRKZ
ruby だけじゃないが
subprocess.Popen とかだと
影響ウケルωωω
0665デフォルトの名無しさん2014/09/27(土) 09:07:42.72ID:Q7f9fSd6
ドキュメントがshell=Trueにすんなって言ってるのに
shell=Trueしてる馬鹿の尻まで拭う必要はない
いい機会だから全員死んでもらおう
0666デフォルトの名無しさん2014/09/27(土) 09:10:47.45ID:V9AoMXji
666
0667デフォルトの名無しさん2014/09/27(土) 10:48:10.73ID:bWg7K4NX
optionで用意すんなって言い返したいけど
0668デフォルトの名無しさん2014/09/27(土) 10:52:30.35ID:TGqPKc2A
汚染された文字列突っ込むなよ
0669デフォルトの名無しさん2014/09/27(土) 12:07:57.80ID:jYunIRKZ
NHK
bash
http://www3.nhk.or.jp/news/html/20140927/k10014922101000.html
0670デフォルトの名無しさん2014/09/28(日) 00:17:32.96ID:rKF2lDHS
技術系ももっと報道機関に人を送り込んで欲しい
0671デフォルトの名無しさん2014/09/28(日) 19:12:54.61ID:TmXNcwY0
webprog板のpythonスレ死んでるんだけど
pythonでwebやるのってだめなの?
rubyとかphpの方がいいの?
0672デフォルトの名無しさん2014/09/28(日) 20:19:57.88ID:pAfSMvLV
少なくとも国内で仕事したいならその認識は正しい
個人的な話なら好きにすればいい
0673デフォルトの名無しさん2014/09/28(日) 20:24:52.65ID:pAfSMvLV
DjangoとFlaskとpyramidとbottleとweb2pyくらいなら
ここで質問しても返ってくるはず
0674デフォルトの名無しさん2014/09/28(日) 21:52:44.37ID:LbKOAJBC
>>671
見てるけどほっといたわ
0675デフォルトの名無しさん2014/09/28(日) 22:05:24.94ID:2qHeiG8b
勉強だったらwebとかやるだけ無駄
0676デフォルトの名無しさん2014/09/28(日) 22:10:22.00ID:LbKOAJBC
bashの踏み台鯖がどんどん増えまくっとる
0677デフォルトの名無しさん2014/09/28(日) 22:26:21.07ID:neMl8K0A
>>671
女の子を釣るには
0678デフォルトの名無しさん2014/09/29(月) 07:43:26.76ID:NI0xARzz
kwsk
0679デフォルトの名無しさん2014/09/29(月) 12:53:14.47ID:EIANdszU
>>671
railsを覚えるほうが
0680デフォルトの名無しさん2014/09/29(月) 18:45:50.65ID:AjnwT8cf
>>658
C++使えってこと?
0681デフォルトの名無しさん2014/09/29(月) 18:54:40.36ID:TuwBUZ1N
>>671
女の子に絶対に
0682デフォルトの名無しさん2014/09/29(月) 20:42:41.50ID:nX5PV3RD
>>680
いえす
0683デフォルトの名無しさん2014/09/29(月) 22:35:31.31ID:WkHslg/o
1ファイルじゃなくていいならexe化はできるでしょ
0684デフォルトの名無しさん2014/09/29(月) 22:38:40.43ID:9GNJpViz
実行ファイルを作る
そんなとき
C、C++、C#
お好きなモノをどうぞ
0685デフォルトの名無しさん2014/09/29(月) 22:39:48.85ID:bm2ucN1b
せっかくだから、俺はこのPythonを選ぶぜ!」
0686デフォルトの名無しさん2014/09/30(火) 11:03:06.12ID:yIpcFUw2
pythonでできることを教えてください
0687デフォルトの名無しさん2014/09/30(火) 12:22:32.74ID:fHAbPVyL
馬鹿には何一つ無理
0688デフォルトの名無しさん2014/09/30(火) 12:27:09.14ID:6HrD4eP+
かわいいセフレができます
0689デフォルトの名無しさん2014/09/30(火) 12:54:47.80ID:nNnITun+
phpでmysqlに接続する時はidとpasswordを書いたファイルをpublic_htmlより上の階層に置くようにしていたのですが、sqlalchemyにはそういう注意が見当たりません。
create_engineを書いたファイル(含むid・password)をpublic_html以下に設置してもセキュリティ的に問題は無いのでしょうか?
0690デフォルトの名無しさん2014/09/30(火) 12:58:58.67ID:Vb2IHbA9
萌えキャラ擬人化だけじゃなくイケメン擬人化もすればpythonも女子に人気でるかも
0691デフォルトの名無しさん2014/09/30(火) 12:59:00.66ID:rWDDVQoR
サーバは何?
0692デフォルトの名無しさん2014/09/30(火) 13:27:43.14ID:nNnITun+
>>691
nginxとuwsgiを使おうと思ってます。
まだsqlalchemyの勉強中なのですが、設置する時にこれで大丈夫なのかと不安になったので。
0693デフォルトの名無しさん2014/09/30(火) 13:50:23.78ID:0GEeaCri
ブラウザから直接指定して見られるかやってみたら
0694デフォルトの名無しさん2014/09/30(火) 14:46:23.26ID:mh/cbJNg
>>697
公開・配布の形態次第だけど、sqlalchemy 利用の有無関係なく
CGIスクリプトとしてデプロイする場合は、同様の注意が必要です

>>675
末尾を埋めるかどうかでバリエーションがあるけど、
itertoolsのレシピ grouper が参考になるよ
0695デフォルトの名無しさん2014/09/30(火) 14:46:25.33ID:+CG1fPdj
和塩で重いときに見えないはずのものが見えてることがあったなあ
0696デフォルトの名無しさん2014/09/30(火) 20:13:32.69ID:qWLkENwI
ようわからんが、コンフィグファイルは外だししろよ
0697デフォルトの名無しさん2014/09/30(火) 20:14:29.65ID:RxufM98r
男なら中出し一択だろ
0698デフォルトの名無しさん2014/09/30(火) 23:41:31.95ID:nNnITun+
>>694
>>696
ああ、やはりそのまま書くのは不味いんですね。外部ファイルに書いてそれを読み込むのが最善の方法という事ですね。
0699デフォルトの名無しさん2014/10/01(水) 00:34:10.66ID:bO1QNk+t
>>698
どんぐらいのサービスかによる
サーバの設定しくじったらアウトの可能性が少しでもあるなら避けるべき
fbでもしくじるぐらいだから
0700デフォルトの名無しさん2014/10/01(水) 11:07:13.94ID:JH4tYyvL
外部のサーバーに書いておいて
起動時にダウソして
稼働中はメモリにキャッシュが安全
0701デフォルトの名無しさん2014/10/01(水) 21:05:28.70ID:xoSFJb3E
コンフィグ外出とか危険じゃね?
もし取れずにデフォルト値で動いて、デフォルト値がデバッグモードだったとか
0702デフォルトの名無しさん2014/10/01(水) 22:11:50.37ID:yheU9Xdn
レンタルサーバとかだと外に出せないから、去年symlinkとかコマンドインジェクションからのディレクトリトラバーサルでWordPressやられてたな

>>701
なんで設定取れなかったらエラー出すようにしないのか
0703デフォルトの名無しさん2014/10/02(木) 01:35:40.64ID:9jKc/G7B
ここはDjangoの質問も大丈夫でしょうか?
質問があるのですが、データベース問い合わせであるカラムだけを問い合わせたいのですがどのようにすればいいのでしょうか?
データベースのカラムはid,name,age,sexとした場合、name,age,sexを取り出したいとします
from bar.models import foo
rows = foo.objects.all()とすれば値が取得できるのは分かるのですが、これではidの値も取得されます
カラム別に取得したいのですが
SELECT name, age, sex FROM db;
みたいなことがしたいです

また、そこで取得した値を確認したいのですがDjangoはprintで出力されないので格納した変数の値や取得した値の中身を調べることが出来ません
PHPであればvar_dump()みたいに中身を見れればいいのですが
どのようにすればいいのでしょうか?
自分としては上記でデータベースから取得したデータをjson化してJavaScriptに送りたいのですが
0704デフォルトの名無しさん2014/10/02(木) 02:14:07.31ID:UX4Sw3I3
1個目
objects.filterとか().values('hoge', 'huga')

2個目
チュートリアルの「はじめての Django アプリ作成、その 1」に書いてある
0705デフォルトの名無しさん2014/10/02(木) 02:15:08.60ID:UX4Sw3I3
書いてから思ったがvalue_listの方が正しいな
0706デフォルトの名無しさん2014/10/02(木) 02:30:40.28ID:9f+0oAt0
django-debug-toolbar 使うと幸せになれるって
うちの仔猫が言ってた

あと defer() や only() の遅延評価も調べてみるといいって
(プライマリーキーのidを"取得しない"はできないけど・・・)
0707デフォルトの名無しさん2014/10/02(木) 09:39:49.38ID:9jKc/G7B
>>704-706
ありがとうございました

チュートリアルの方はもう一度目を通してみます
0708デフォルトの名無しさん2014/10/02(木) 09:55:09.89ID:9jKc/G7B
>>704
すみません、チュートリアル読んでみましたが分かりませんでした
python manage.py shell
の事をおっしゃられているのでしょうか?
0709デフォルトの名無しさん2014/10/02(木) 11:44:59.80ID:YwCG0RRZ
djangoのスレ行けよ
せっかく専用スレあるんだから同じような問題を抱えている人が見つけやすいだろ
0710デフォルトの名無しさん2014/10/02(木) 11:48:15.39ID:YwCG0RRZ
>>708
そもそもそれはチュートリアルをやってればはじめの方に出てくることだし
まずはチュートリアルをやるべきでしょ
効く前に最低限のことはやれよ
0711デフォルトの名無しさん2014/10/02(木) 11:59:13.09ID:6cuXtJAM
馬鹿には無理
0712デフォルトの名無しさん2014/10/02(木) 16:12:18.19ID:pc0dEnhS
>>711
馬鹿の一つ覚え
0713デフォルトの名無しさん2014/10/02(木) 23:55:10.12ID:XAeI31Ii
876 名前:デフォルトの名無しさん[sage] 投稿日:2014/10/02(木) 16:13:11.51 ID:pc0dEnhS
>>874
馬鹿の一つ覚え
0714デフォルトの名無しさん2014/10/03(金) 00:41:39.07ID:CaIs5bTM
安価先も一緒に張れよw
0715デフォルトの名無しさん2014/10/03(金) 00:47:03.50ID:iSAMd/e7
きゃりーぱみゅぱみゅって最高だよね
0716デフォルトの名無しさん2014/10/07(火) 11:09:50.01ID:9B02+Xes
Python界の有名人

Before
https://avatars1.githubusercontent.com/u/854049?v=2&;s=460

After
http://image.gihyo.co.jp/assets/images/news/report/01/pyconjp2014/0002/thumb/TH400_003.jpg

会ったこと無いから別人にしか見えない
0717デフォルトの名無しさん2014/10/07(火) 16:36:27.06ID:AA14T+84
誰だよ
0718デフォルトの名無しさん2014/10/07(火) 19:45:00.88ID:XRYgiLy4
pyconスタッフって打ち上げありますか?
pycon 2015年の飲み会があるそうですけどコミュ障が参加したら孤立するだけですかね?
0719デフォルトの名無しさん2014/10/07(火) 22:41:49.33ID:s7U7yQsb
誰だこの不細工は?
0720デフォルトの名無しさん2014/10/08(水) 00:34:25.52ID:8oPiAR2I
俺らより有能で俺らよりイケメン
そして俺らより高年収
英語ネイティブだしね
0721デフォルトの名無しさん2014/10/08(水) 09:35:47.64ID:SfZJBG4v
Django
https://www.youtube.com/watch?v=jn5ajaZgcMw
0722デフォルトの名無しさん2014/10/08(水) 10:40:21.93ID:2AVvJHZy
>>719
殿ご乱心?
0723デフォルトの名無しさん2014/10/08(水) 10:42:02.95ID:AsOaYLsj
よく考えたらPythonって金持ちっっぽいやつらばっかりだな
おれはphpのほうが合いそうなのでここで引きます
0724デフォルトの名無しさん2014/10/08(水) 10:46:34.91ID:2AVvJHZy
>>716だった
0725デフォルトの名無しさん2014/10/08(水) 11:53:16.34ID:P6WfsOfK
>>721
マルチ死ね
0726デフォルトの名無しさん2014/10/08(水) 22:21:10.49ID:P4ZmXPPk
python2.7でGAEのwebアプリケーションを作成しているのですが
raw_input()
を使うと、EOFError: EOF when reading a line が発生します
具体的には、ouath2クライアントを使用したのですが
def get(self):
name = raw_input('Enter name: ')
print name
のようなコードでさえ EOFError: EOF when reading a line が発生してしまいます
0727デフォルトの名無しさん2014/10/08(水) 22:25:37.76ID:OgeXMJ81
実にくだすれっぽい質問だ
0728デフォルトの名無しさん2014/10/09(木) 02:37:29.76ID:T37jfMqm
>>726
Googleのサーバ管理者に名前を入れてもらいたいのか?
0729デフォルトの名無しさん2014/10/09(木) 07:57:56.80ID:OwjKzXDz
Python3に対応したscrapyみたいなのありませんか?

「Rubyによるクローラー開発技法」という本が高評価なのでちょっと悔しいです。
0730デフォルトの名無しさん2014/10/09(木) 10:03:53.14ID:YwRbzS2u
Python2だとなんか不都合でもあるのか?
0731デフォルトの名無しさん2014/10/09(木) 22:06:03.62ID:suIfRrTZ
大学で使ってる機械がパイソンで動いている事から、パイソンを使えるようになりたいと思いまして、練習中の身です。
一環としてwxpythonを使った簡単なアプリ(研究室の人向け)を作成している途中なのですが、動的な値の変更の仕方がいまいちわからず、行き詰まっております。

作成しているアプリは、スピンボタンやスライダ、ラジオボタンなどで実験状況を設定した上で、最終的に1つか2つ程度の値を出力するようなシミュレータみたいなものです。

具体的な課題は、説明しづらいのですが、statictextをイベントで書き変えるときに、書き換えた後の値を他のクラスでも共有したいという事です。
(出来ればコードをお見せして具体的に何がしたいのかを説明させていただきたいのですが、どのような形でお見せすればよいでしょうか)

恐らく初歩的なことかとは思いますが、どうぞお力添え下さいますようお願い致します。
0732デフォルトの名無しさん2014/10/09(木) 22:11:36.75ID:suIfRrTZ
>>1
> ◆長いコードはこういうところにはってください
> ttp://ideone.com/
> ttp://codepad.org/
> ttp://pastebin.com/
> ttp://dpaste.com/
0733デフォルトの名無しさん2014/10/09(木) 22:40:12.93ID:suIfRrTZ
>>739
お手数をおかけして申し訳ございません.
コードは以下になります.冗長な部分などあるかと思いますがご容赦ください.
http://ideone.com/60uZY5

このコードを実行し,たとえばスピンボタンを押したときに,Wavelengthと表示された部分は動的に変化させることはうまくできたのですが,LASER Powerと表示された部分を動的に変化させる方法が解りません.
最終的には,たとえばwavelengthに表示される値とPower Meter Valueに表示される値などを基にして計算した値をLASER Powerとして出力するようなプログラムを作りたいと考えております.
(物理的意味はありませんが,プログラミング的に最も簡単な例を挙げれば,wavelengthとPowerMeterValueの値を掛け合わせたものをLASER Powerとして動的に表示するといったプログラムになります)


よろしくお願いいたします

p.s.本文を一度誤ってscの方に書き込んでしまいました
0734デフォルトの名無しさん2014/10/09(木) 23:28:41.64ID:XlUKidJJ
pmadj_funcとwladj_funcがPower Meterとwavelengthの値が変わった時にそれぞれのラベルを書き換えてるよね?
その中で一緒にlaserpower2のラベルも書き換えればいいのでは

たとえばpmadj_funcだったら
#pmdis2のラベルを書き換えた後に……
#pmdis2とwldis2の値を取得
#それらでlaserpowerを計算
#laserpower2に値を設定
聞きたかったのはこういうことで合ってる?
0735デフォルトの名無しさん2014/10/10(金) 00:50:04.61ID:OQ/++Vvv
>>734
ご返信いただきありがとうござます。
質問の内容はご察しの通りです。

これまで、「プログラムを通して保持される変数」を関数で書き換えられないかと考えておりましたが、やはり>>734さんの仰る方法しかないのでしょうか。
>>734さんの仰る方法ですと、1つの関数ごとに幾つかの変数を親を通して呼び出さなければならないため、たいへん煩雑になるかと考えておりました。

例えば、>>734さんの挙げていただいた例の場合ですと、pmadj_funcという関数でpmdis2とwldis2を呼び出すことになります。これは同時に、wladj_funcでもpmdis2とwldis2を呼び出すことになりますよね。
のちのちチェックボックスやラジオボックスも利用することを考えると、躊躇いが出てしまうわけです。

何れにせよ、的を射ない質問ながら的確にご回答いただけたこと、ありがたく思います。
その他、お気づきの点などございましたらご指摘下さいますよう、よろしくお願いいたします。
0736デフォルトの名無しさん2014/10/10(金) 01:27:23.22ID:J/PhW3d6
>>735
Mediatorパターンがピッタリだと思うで調べてみてください
0737デフォルトの名無しさん2014/10/10(金) 13:22:07.51ID:T0LFFi4l
MVC
0738デフォルトの名無しさん2014/10/10(金) 20:23:10.07ID:f/axCad2
>>736
ご返信ありがとうございます。
現在調べてる最中でして、まだなんとも言えませんが・・・
0739デフォルトの名無しさん2014/10/10(金) 22:02:11.51ID:9sDXKy/D
pyenvをやめて自分で1から入れようと思うんですけど
~/mycode/homepageの仮想環境
~/mycode/toukeiの仮想環境を作った場合
ディレクトリを移動して手動でactivateコマンドを実行するのが面倒くさいんですけど
こういうのはどうやってますか?
0740デフォルトの名無しさん2014/10/10(金) 22:18:29.54ID:ssRlZAm7
できそこないなので素直にpyenv使ってます
あなたも出来損ないなら高望みを止めた方がいいですよ
0741デフォルトの名無しさん2014/10/10(金) 23:51:16.79ID:ZRNQwYei
>>739
pyenvを使いたくない理由は何ですか?
とても便利だと思うんですけど。
0742デフォルトの名無しさん2014/10/10(金) 23:58:21.31ID:9sDXKy/D
インストールディレクトリ名が固定だからです
0743デフォルトの名無しさん2014/10/11(土) 11:52:33.43ID:zlAuz39Z
ん〜pyenv-aliasで名前変えられるけどそう言うことじゃなく?
https://github.com/s1341/pyenv-alias/blob/master/README.md
0744デフォルトの名無しさん2014/10/11(土) 12:05:56.05ID:WAdfmHXI
男は黙ってvirtulaenv
0745デフォルトの名無しさん2014/10/11(土) 12:25:17.23ID:1gHC+Rt5
それとパッチを当てにくいからです
プラス、使いたいバージョンが入れられないからです3.4.2
0746デフォルトの名無しさん2014/10/11(土) 12:41:00.76ID:zlAuz39Z
お、3.4.2出たのか?と思ったらRCじゃねえか
バージョンに拘るならバージョンは正確に言えよ

シェルのcdとpushd上書きするような関数定義して
裏でactivate実行すればいい
簡単だろ?
0747デフォルトの名無しさん2014/10/11(土) 12:47:27.96ID:1gHC+Rt5
先輩すいません
それちょっとやってみます
0748デフォルトの名無しさん2014/10/11(土) 21:50:31.12ID:c/9/8F6M
3.4.2もうちゃんとでてるだろ。
0749デフォルトの名無しさん2014/10/12(日) 06:59:18.33ID:rVMmKUVB
sqlalchemyを使ってmysqlの検索結果をテンプレートに表示するページを作ったんですが、数回アクセス(更新)してから1分ほど経過して再度更新するとエラーを吐きます。

エラーの内容は「無効なトランザクションがロールバックされるまで再接続出来ない」との事なんですが無効なトランザクションが自動で消えるようにするにはどうすれば良いのでしょうか?

ファイルを3つに分けているのでimportの方法に問題ありなんですかねぇ…。
0750デフォルトの名無しさん2014/10/12(日) 07:20:35.87ID:Z8ok/lvr
commit汁
0751デフォルトの名無しさん2014/10/12(日) 19:15:57.10ID:XcZcZSTO
ここではPortable Pythonは人気が無いのですか?
2.7系と3.4系の両方の環境が作れるんで便利だと思うんですが。
0752デフォルトの名無しさん2014/10/12(日) 19:25:22.45ID:WmFvY6mV
そもそもwindowsが少数派なんでは
0753デフォルトの名無しさん2014/10/12(日) 19:25:33.71ID:OFZFdMRu
そんなものを使わなくても環境作れますが
0754デフォルトの名無しさん2014/10/12(日) 20:08:00.64ID:iMtIS90f
むしろどんな風にインストールすると両方使えない環境になるんだ?
0755デフォルトの名無しさん2014/10/12(日) 21:42:24.87ID:xW6MFRga
>>754
そっとしといてやれよ。。。
たぶん環境変数でPATHの順番がとか言われるよ
0756デフォルトの名無しさん2014/10/12(日) 23:12:20.59ID:5gtQJftx
Windowsは、3.3以降に付いてくるpyコマンドを使えばPATHを気にする必要もない
2/3系の切り替えも32/64bitの切り替えもオプション1つかshenangでできるし
0757デフォルトの名無しさん2014/10/12(日) 23:36:36.47ID:bfCObt5l
仮想環境の利点がよくわかりません。
3.2 と 3.3 というように Python のバージョン違いを使う時にメリットがあるのでしょうか?
今は、3.4 しか使っていません。
0758デフォルトの名無しさん2014/10/13(月) 00:00:28.67ID:3SkqDiWm
利点が分かる時に使えば良い
0759デフォルトの名無しさん2014/10/13(月) 00:05:41.38ID:lbLLPSKH
よくある問いかけだな
この機能何に使うんですか?存在する意味が分かりませんって

聞いてるこっちは酷いマヌケに遭遇した気分になるよ
0760デフォルトの名無しさん2014/10/13(月) 00:33:39.49ID:AakrwsYM
まぁ使う必要がなければ、使う意味はないからね
0761デフォルトの名無しさん2014/10/13(月) 00:36:01.73ID:AakrwsYM
>>759
こういう質問とその回答、大事なことだと思うけどね
0762デフォルトの名無しさん2014/10/13(月) 10:05:10.08ID:UJCB5jQM
意味が判らないのは
自分がそのレベルに達してないだけなのに
自分は悪くないと思ってるところが厨房の厨房たる所以
0763デフォルトの名無しさん2014/10/13(月) 11:12:44.57ID:UiUWyauZ
バージョン3.4しか使わないならバージョンの切り替えで仮想環境を作る必要はない
環境ごとにパッケージをインストールしたい時に仮想環境を作ればよい
0764デフォルトの名無しさん2014/10/13(月) 11:30:40.19ID:DJNIhGJv
3.2 から 3.4 までの環境に対応とかね
例えばライブラリーを作成するとき
動作環境を時間かけてアップする時(3.2, 3.4 どっちでも動くようにしていく)
他にも色々あるよ
0765デフォルトの名無しさん2014/10/13(月) 12:00:49.83ID:YZWgIN5K
>>757
Pythonのバージョンだけじゃない。ライブラリも同じ。
二つのアプリfoo,barがあったとして、fooはAとBというライブラリが必要、barはBとCが必要な場合、
グローバルな環境にA, B, C全部いれるのはあまり良くない。

仮にfooでBのバージョンをあげたいけど、barではあげたくないってなったら、どちらかでBの入れ方を変えなければいけなかったり、
設定やコードを変更しなければいけないかもしれない。
仮想環境ならfooが動いてる環境でpip install B==versionするだけでいい。
0766デフォルトの名無しさん2014/10/13(月) 12:03:36.97ID:YZWgIN5K
あと、メジャーなフレームワークやモジュールならvirtualenvとpipでの環境構築方法が大抵用意されてる、と思う。
0767デフォルトの名無しさん2014/10/13(月) 16:06:42.37ID:k1sWPTWW
>>750
ありがとうございます。
commitを入れたらブラウザ上のエラーが無くなりました。

今はブラウザを更新する度にクエリの内容を表示したりしなかったりをランダムに繰り返しています。

表示しなかった時のログを見ると
SIGPIPE:writing to a closed pipe/socket/fd
でした。

一部だけ切断されるのはまだ何かの記述が足りないのでしょうか?
0768デフォルトの名無しさん2014/10/13(月) 16:16:02.40ID:R2vIvTaj
エラーが再現できる最小のコードぐらい晴れ
0769デフォルトの名無しさん2014/10/13(月) 17:00:43.37ID:yFRqmPNp
なんならcommitせずにrollbackでもよろし
0770デフォルトの名無しさん2014/10/14(火) 02:25:34.98ID:wbq8rtwF
a = list(range(0, 10))
a = [a[i:i+3] for i in range(0, len(a), 3)]
print(a)

一次元リストを二次元リストにするコードです
別の書き方を教えてください
0771デフォルトの名無しさん2014/10/14(火) 03:03:11.24ID:VNVYyJ0e
初心者が適当に答えを考えてみる

def xl(ls, stp):
return [ls[i:+stp] for i in range(0, len(ls), stp)]


a = list(range(0, 10))
b = xl(a, 3)
c = xl(a, 2)

こんな感じ
関数の中身は流用w
0772デフォルトの名無しさん2014/10/14(火) 03:09:59.40ID:zVB4iXSQ
http://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks-in-python

HaskellにはsplitEvery(a.k.a chunk)という関数がある。参考までに
http://hackage.haskell.org/package/split-0.1.1/docs/src/Data-List-Split-Internals.html#splitEvery
0773デフォルトの名無しさん2014/10/14(火) 03:10:36.07ID:n0LsyPEe
関数にしてるだけじゃん
0774デフォルトの名無しさん2014/10/14(火) 03:15:26.45ID:pTBqpiFp
(SCに投稿してしまったので再投稿)


775です。

自己解決しました。

engine = create_engine(uri, pool_recycle=MySQLのwait_timeより短い時間)

とする事で切断されなくなりました。

interactive_timeoutとwait_timeoutを
8時間から60秒に変更していたので
1分後の更新でエラーが出るようになっていたようです。
(もし8時間のままだったら8時間後からエラーが出るのかは謎ですが…)
0775デフォルトの名無しさん2014/10/14(火) 03:21:09.04ID:lBWRGPCr
いいや俺が775だね
0776デフォルトの名無しさん2014/10/14(火) 03:29:39.19ID:pTBqpiFp
>>775
すいません。
767でした。
0777デフォルトの名無しさん2014/10/14(火) 03:52:57.78ID:2EiwlIPP
>>770
http://ideone.com/kxB0cX

書き終わってから>>772を見たらあああってなった
0778デフォルトの名無しさん2014/10/14(火) 21:28:51.98ID:pTBqpiFp
>>769
チュートリアルやググった時に出てくる記事には検索だけの場合はcommitやrollbackが必要とは書いていないのですが、なぜロールバックされてないというエラーが出るのか不思議です。

パーフェクトPythonを参考に以下のような関数やメソッドを記述した場合はエラーが出ません。

def kensaku():
try:
result = 検索内容.one()
return result
session.commit()
except:
session.rollback()
finally:
session.close

このままでは全てのクエリにtry except finallyを付ける事になってしまいます。他にロールバックのエラーを出さない書き方ってありますか?
0779デフォルトの名無しさん2014/10/15(水) 02:45:30.91ID:J+WRCzbK
検索だけならトランザクション開始しなきゃいいんじゃね
0780デフォルトの名無しさん2014/10/15(水) 07:47:48.72ID:caHw/4to
同意します
0781デフォルトの名無しさん2014/10/15(水) 13:01:35.81ID:zl/yfVrd
pyramid使ってる人にお聞きしたいんですがバリデーションどうされてます?
wtformsやdeformでやってるんでしょうか?
どちらも扱いにくいことこのうえないんですがおすすめのフォームライブラリありませんか?
0782デフォルトの名無しさん2014/10/15(水) 13:34:28.98ID:OgUxeFYn
【Python】Python Webフレームワーク総合スレ
http://kanae.2ch.net/test/read.cgi/php/1329996601/
0783デフォルトの名無しさん2014/10/15(水) 13:49:01.21ID:6UPjvDQa
WSGIってJSPとかJavaServletみたいなものって認識で合ってますか?
0784デフォルトの名無しさん2014/10/15(水) 13:58:23.34ID:y5p6iW7A
mod_pythonを速くしたやつ?
0785デフォルトの名無しさん2014/10/15(水) 15:56:44.67ID:b6Lq5BMW
>>783
合ってない
ていうかJSPとJava Servletが同じものじゃないし
0786デフォルトの名無しさん2014/10/15(水) 16:24:20.43ID:C/JjrqVa
ウェブサーバーとアプリケーションサーバー間のプロトコルです
0787デフォルトの名無しさん2014/10/15(水) 16:30:00.58ID:y5p6iW7A
まあそれが正解なんだろうけどmod_wsgi=WSGIみたいな扱いに
なっちゃってるからなあ。

なんでそんな名前にしたんだろ?
python関連はpyを付けるのが慣例みたいになってるのに。
0788デフォルトの名無しさん2014/10/15(水) 18:50:43.08ID:ecrFBKrn
WSGIはWebのインターフェイス
PythonではPEP3333で定義されてる
http://legacy.python.org/dev/peps/pep-3333/

それを実装してるライブラリがwsgiref
https://docs.python.org/3/library/wsgiref.html

apacheモジュールはmod_wsgi。mod_pythonはもう開発がとまってる。
https://github.com/GrahamDumpleton/mod_wsgi

フレームワークはPyramid、Django、fluskなどなど

JSPとJavaServletは知らん
0789デフォルトの名無しさん2014/10/15(水) 18:52:55.90ID:ecrFBKrn
What is WSGI?
WSGI is the Web Server Gateway Interface. It is a specification that describes how web server communicates with web applications, and how web applications can be chained together to process one request.

WSGI is Python standard described in detail in PEP 3333.
(WSGI.org, http://wsgi.readthedocs.org/en/latest/what.html#what-is-wsgi)
0790デフォルトの名無しさん2014/10/15(水) 19:09:00.27ID:oTkKZ4Eq
wsgi.js
0791デフォルトの名無しさん2014/10/15(水) 22:46:10.27ID:rB995LuX
python3.3では問題ないのにpython2.7でopen("text.txt", encoding="utf-8")を実行すると
encoding' is an invalid keyword argument for this function
ってエラーが出るんですけどpython2.7ではどう書けばいいですか?

ここ見て書いたので記述は間違ってない気がするんですがお手上げです
http://docs.python.jp/2/howto/unicode.html
0792デフォルトの名無しさん2014/10/15(水) 22:55:16.48ID:Id/STamp
>>791
組み込みの open じゃなく
import codecs からの codecs.open
0793デフォルトの名無しさん2014/10/15(水) 23:32:35.53ID:rB995LuX
あ、ほんとだ
codecs使えば2系でも3系でも使えますね
0794デフォルトの名無しさん2014/10/16(木) 00:18:06.43ID:JRVJ27N0
>>791
何でPython2.7でencoding' is an invalid keyword argument for this functionっていうエラーがでるんですか?っていう質問じゃなかったのか・・
0795デフォルトの名無しさん2014/10/16(木) 07:28:47.07ID:GRIRO8vO
どこをどう読んだらそんな質問に見えるんだ
0796デフォルトの名無しさん2014/10/16(木) 07:44:01.13ID:fmheqVVd
今度は日本語も読めないやつかよ
0797デフォルトの名無しさん2014/10/16(木) 16:01:17.38ID:CsOFEKWu
OSのカーネルや言語処理系は最もコード密度が高い分野。一度もソース読んだ事の無い人にとっては
理解不能な世界。組み込み用のmrubyやJavaScriptですら公開されてるソース読んですぐ理解出来る代物ではない。
だれがどのように保守するかは大きな問題。カーネルや開発者の高齢化問題も発生する。
経済が破綻すればオープンソースは資金調達や人員の確保問題で保守がどうなるか不明なところがある。
そうなると伝統的プロプライエタリなOSや言語が長期的には有利かもしれない。
0798デフォルトの名無しさん2014/10/16(木) 16:57:50.55ID:KDVTqClB
経済が破綻したらお前をボコボコにして奴隷にする方が早い
0799デフォルトの名無しさん2014/10/17(金) 00:43:21.82ID:JX57Rjwu
self、thisって何に使うものなんですか?
必須ではないんですか?
猿でも分かるように教えてください。
0800デフォルトの名無しさん2014/10/17(金) 00:57:11.22ID:Db3yDsQb
>>799
Python で this は使わない。
self については、Python の初心者向けのドキュメントでは100%説明されてる。
つまり、簡単に言うと、ググれ。
ググってそれ読んでわからなかったときにその何がわからないかを聞け。
0801デフォルトの名無しさん2014/10/17(金) 00:59:36.64ID:tGTslkxI
オランウータンがゴリラに売るためのバナナをチンパンジーが持ってきました
この「ゴリラに売るバナナ」と「チンパンジーが持ってきたバナナ」という2つのバナナを区別するのにselfを使います

self.banana ←ゴリラに売る予定のバナナ
banana ← チンパンジーが持ってきたバナナ

もし、「ゴリラに売るバナナ」 = 「チンパンジーが持ってきたバナナ」ならば

self.banana = banana

というふうに書けます
バナナが2つ存在していてもこれなら見分けがつけられますね
こうしてオランウータンはバナナをゴリラに売れましたとさ
0802デフォルトの名無しさん2014/10/17(金) 03:36:34.48ID:DGojcH6F
俺にも分かる説明乙
0803デフォルトの名無しさん2014/10/17(金) 05:58:42.93ID:C+N94CAc
>>801
意味不明
0804デフォルトの名無しさん2014/10/17(金) 06:22:40.00ID:g6ZBfCoZ
>>779
アドバイスを読んでからあれこれ試してみたのですが方法がわかりません。

検索のクエリ自体が
session.query(…
で始まっているので

session = Session()
を書かないと動いてくれません。

これを書くとrollbackやcloseなどを書かないと後からエラーが出てしまいます。

どう書けばトランザクション無しで検索する事が出来るのでしょうか?
0805デフォルトの名無しさん2014/10/17(金) 06:26:20.65ID:o5eX2ePN
クラス・インスタンスとは何かを調べる
↓
Ptyhonのクラス・インスタンスの典型的なコード・使用例を調べる
↓
例の中でselfがどういう役割を演じているかを理解する
↓
selfという名称が慣習的なものに過ぎず実は何でも良いことを知ってショックを受ける

Pythonの場合、selfを理解するのにこれだけのステップが必要
全くの初心者には遠い道のり
自分でクラス・インスタンスを作ることのない企業のエンドユーザーや
ライトユーザーは知らなくてもよいだろう
オブジェクト指向の深い闇に足を踏み入れずに済むなら、それに超したことはない
0806デフォルトの名無しさん2014/10/17(金) 07:15:57.68ID:JX57Rjwu
>>801
わ、分からない、、、。
実際の超簡単なコードで、どのような役割があるのか教えてください。
一応、いろんなサイトを調べてはいるんですが、自分には理解できない説明ばかりです。
selfの何が分からないかすら分からないと言う状態で。

・何かを識別するための目印
というところまで分かりました。
0807デフォルトの名無しさん2014/10/17(金) 07:30:41.82ID:QP1DIUi6
>>805
>selfという名称が慣習的なものに過ぎず実は何でも良いことを知ってショックを受ける
↓
第一引数が self じゃなくて class のときもあることを知ってさらにショックを受ける
0808デフォルトの名無しさん2014/10/17(金) 07:45:20.05ID:o5eX2ePN
>>807
そんな使い方もあるの?
深淵に足を踏み入れなくてよかったとつくづく思うよ
自分でクラスを書いたり人の書いたクラスを読んだりすることなく
人生を終えられたら、それは幸せなことだよね
0809デフォルトの名無しさん2014/10/17(金) 08:05:56.76ID:QP1DIUi6
知らぬが仏という意味ならそうだね
0810デフォルトの名無しさん2014/10/17(金) 08:13:38.18ID:1uF0w0Sv
もう残りの人生も少ない
ただのひとつの関数も作らずに
逐次処理と条件分岐とループだけで終えたい
0811デフォルトの名無しさん2014/10/17(金) 08:23:21.73ID:as22cljE
>>806
いろんなサイトをぐぐってはいるけど、和訳でもいいから公式のチュートリアルは見てないとかいう落ちある?
http://docs.python.jp/3.4/tutorial/classes.html#classes
0812デフォルトの名無しさん2014/10/17(金) 08:27:54.84ID:as22cljE
でもこれ、Pythonのチュートリアルであってプログラミングのチュートリアルじゃないよな
>C++ の用語で言えば、通常のクラスメンバ (データメンバも含む) は (プライベート変数 に書かれている例外を除いて) public であり、メンバ関数はすべて 仮想関数(virtual) です。
>Module-3 にあるような、オブジェクトのメンバをメソッドから参照するための短縮した記法は使えません: メソッド関数の宣言では、オブジェクト自体を表す第一引数を明示しなければなりません。
>第一引数のオブジェクトはメソッド呼び出しの際に暗黙の引数として渡されます。Smalltalk に似て、クラスはそれ自体がオブジェクトです。
0813デフォルトの名無しさん2014/10/17(金) 08:28:49.08ID:as22cljE
何故チュートリアルに三つも他言語の名前を使ってしまうのか・・
0814デフォルトの名無しさん2014/10/17(金) 08:47:39.88ID:1uF0w0Sv
>>813
プログラム関連の説明書きは
C,C++の最低限の知識がある前提で書かれているものが多い
Cでいう〇〇だとか、C++の〇〇に相当する機能であるだとか。
オブジェクト指向系だと、それにsmalltalk,JAVAが加わる
それにもやっぱりCでいう〇〇とかいうのが出てくる
Cを知らない奴は相手にしませんって前書きに書いとけって何度思ったことか
0815デフォルトの名無しさん2014/10/17(金) 08:52:57.89ID:as22cljE
C++, Modula-3, Smalltalkの名前が無ければ、この説明は成り立たないのか
成り立たないのだとしたら、何故名前を出さなくても分かるようなチュートリアルにしてくれないのか・・

あと、ググれってプログラミングのアドバイスで最悪の答えだと思う
0816デフォルトの名無しさん2014/10/17(金) 08:55:23.79ID:g6ZBfCoZ
>>806
どうぞ。

class Banana:
def __init __(self, iro, aji):
self.iro = iro
self.aji = aji
def check(self):
if self.aji is not "甘い":
print("「まだ駄目」")

bana1 = Banana("黄色", "甘い")
bana2 = Banana("緑色", "渋い")

bana2.check()

#「まだ駄目」
0817デフォルトの名無しさん2014/10/17(金) 10:19:59.07ID:9Bl66x9H
いい加減Python3.xに移行しろよ
2.7を切り捨てた跡のLinuxにインストールされるデフォルトバージョンを3.4にしろよ
決して3.2とかいつまで使わせるんだよ
0818デフォルトの名無しさん2014/10/17(金) 10:26:18.03ID:ynxMbyDc
>>816
文字列の比較は is でやったらだめ
長い文字列だと == は True で is が False とか起こりうる
0819デフォルトの名無しさん2014/10/17(金) 10:30:51.90ID:yTetx1VL
>>817
切り捨てるどころか2020年までサポート延長しましたが?
まじワロリーヌですわ
0820デフォルトの名無しさん2014/10/17(金) 10:31:50.74ID:3zlldvS3
一見python関係ないようなツールをインストールしてもビルトスクリプトが2系を使ってる場合が多い
pyenv使ってるもののデフォルトが2じゃないとその辺でいちいち失敗するしストレスがマッハだわ
0821デフォルトの名無しさん2014/10/17(金) 10:38:39.55ID:ETQxRSUe
C:\work>python -V
Python 3.2
0822デフォルトの名無しさん2014/10/17(金) 11:10:08.40ID:HZvg3la9
>>813
確かに日本人がフランス語を習うときに
英語ではこういうことです
とか多言語の知識前提に教えられても困る罠
0823デフォルトの名無しさん2014/10/17(金) 11:13:12.15ID:HZvg3la9
python3 は perl6 と同じ運命をたどると予想
0824デフォルトの名無しさん2014/10/17(金) 11:20:22.17ID:Lmpe/lkW
Pythonを最初の言語に選ぶやつなんていないという前提のチュートリアルなのかも
0825デフォルトの名無しさん2014/10/17(金) 11:21:58.60ID:ynxMbyDc
そこらへんは知ってる人向けなので知らなかったら読み飛ばせばいい
第一 Module-3(ママ)とか誰も知らない
0826デフォルトの名無しさん2014/10/17(金) 12:02:10.24ID:88x3y3Tf
reStructuredTextのインデントってスペース3個なのは何か暗黙の了解なんですか?
Sphinxみると3個なんです
0827デフォルトの名無しさん2014/10/17(金) 12:09:07.22ID:HZvg3la9
rubyist?
0828デフォルトの名無しさん2014/10/17(金) 19:14:55.01ID:iuzLbdxk
>>806
オブジェクト指向プログラミング(OOP)は知ってますか?
OOPが分からないとその書き方であるselfは説明しづらいです
最初は標準ライブラリを使ってOOPを体験するのがいいと思います
datetimeあたりが身近な題材でお勧めです

↑考え方
オブジェクト指向プログラミング(OOP)
クラスベースのOOP
OOPをサポートするためのPythonの構文(selfはここ)
↓やり方
0829デフォルトの名無しさん2014/10/17(金) 19:38:41.92ID:JhxOb/La
オブジェクト指向を覚えても日曜プログラマーの自分には使う機会がなかった・・・・
0830デフォルトの名無しさん2014/10/17(金) 20:19:23.52ID:Lmpe/lkW
日曜プログラマーの人って本職は何なの?SEとか?
0831デフォルトの名無しさん2014/10/17(金) 20:26:56.47ID:jIMeQkH1
土曜も日曜も関係なくない?
0832デフォルトの名無しさん2014/10/17(金) 20:29:15.71ID:JhxOb/La
>>830
インフラ系SE
体力勝負w
0833デフォルトの名無しさん2014/10/17(金) 20:32:57.73ID:JX57Rjwu
>>806
ありがとう、分からない。

>>828
オブジェクト指向は、プログラムを部品として扱うことで、再利用したり・バグを少なくするって考え方ですよね。
クラスベースっていうのは、部品をクラスとして定義するということですか?
この程度のあいまいな理解はしているつもりですが、selfについてはまだ理解できません。
概念的なことだけでも、教えてください。

あとは理解できることを期待しながら、プログラムを組むつもりです。
blenderで使うためにpythonをやってるんです。

それと、__init__も躓いている部分です。
initって何でしょうか?初期化(変数の宣言と代入を同時に行う)のために使うと書いてありますが、どんな場合に役立つのですか?
0834デフォルトの名無しさん2014/10/17(金) 20:47:35.45ID:JhxOb/La
プロパティを持たせるのってその処理のデータをそれぞれに維持できるからじゃないの?
なんか違ったらごめん
0835デフォルトの名無しさん2014/10/17(金) 21:16:08.24ID:jIMeQkH1
http://coreblog.org/ats/translation-of-why-explicit-self-has-to-stay/
0836デフォルトの名無しさん2014/10/17(金) 21:18:23.89ID:as22cljE
>>833
>initって何でしょうか?初期化(変数の宣言と代入を同時に行う)のために使うと書いてありますが、どんな場合に役立つのですか?

>このクラスのインスタンス生成操作 (クラスオブジェクトの “呼出し”) を行うと、空のオブジェクトを生成します。
>多くのクラスは、オブジェクトを作成する際に、カスタマイズされた特定の初期状態になってほしいと望んでいます。
>そのために、クラスには __init__() という名前の特別なメソッド定義することができます。
(http://docs.python.jp/3.4/tutorial/classes.html#class-objects)
08378362014/10/17(金) 21:27:47.09ID:as22cljE
簡単に言うと、そのクラスを使う上で最低限必要な情報はインスタンス生成時に要求しておきましょうっていうこと
例えば、urllib.request.Requestだと
def __init__(self, url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None):
となってて、__init__内でself.full_urlにurlが定義される

__init__がなければ、いろんなところでurlを引数に要求しないといけないけど、インスタンス生成時にそれを渡してもらえばself.full_urlで他の関数からもアクセスできる
08388362014/10/17(金) 22:19:29.48ID:as22cljE
>>833
ていうか
>初期化(変数の宣言と代入を同時に行う)のために使うと書いてありますが
この初期化="変数の宣言と代入を同時に行う"って、どこに書いてあるの?
0839デフォルトの名無しさん2014/10/18(土) 00:02:33.77ID:T+vEH8Sg
無限ループをキー入力したら止めるようにしたいのですが、簡単なサンプルがあれば
教えていただけると助かります。
0840デフォルトの名無しさん2014/10/18(土) 00:13:42.93ID:H02BWtzc
ctrl+c
0841デフォルトの名無しさん2014/10/18(土) 01:21:14.02ID:SG/PMloy
初心者です。Python2.7で、thread.threadingで生成したスレッドを
一時停止させたあとに再開する方法は、無いでしょうか。

threadingで呼び出している関数のなかで、While ループしてて
threadingのEvenがset()されたら、while抜ける仕組みで一時停止っぽい
ことはできたんですけど、またその関数を呼ぶことができない><
startは2回呼んじゃだめって
おこられちゃう。 ><
0842デフォルトの名無しさん2014/10/18(土) 02:18:23.53ID:I9h7M137
>>841
threading.Condition()
0843デフォルトの名無しさん2014/10/18(土) 04:16:48.35ID:KHrmHp6N
>>833
上手い説明が思い浮かばないのでselfの役割をサンプルで書きます
クラス定義の中に現れるselfと外で作られたdを見比べて下さい

import datetime
class MyDate(datetime.date):
 def ja_date(self):
  return '{}年{}月{}日'.format(self.year, self.month, self.day)

d = MyDate(2014, 10, 18)
print([d.year, d.month, d.day]) # [2014, 10, 18] と表示される
print(d.ja_date()) # 2014年10月18日 と表示される
0844デフォルトの名無しさん2014/10/18(土) 04:37:41.95ID:KHrmHp6N
>>833
他のプログラミング言語から引用せずに私の解釈でOOPを説明します
Q:オブジェクト指向プログラミング(OOP)とは?
A:オブジェクトを単位としてプログラムを組み立てていく設計方法
Q:オブジェクトとは?
A:関連性のあるデータや操作を結びつけてまとめた構造
Q:OOPの利点は?
A:関連するものをまとめることで可読性や改変の容易さが向上する
Q:クラスベースのOOPとは?
A:クラスと呼ばれるオブジェクトの設計図のようなものを作るOOPの方法
クラスを元に生成したオブジェクトは(クラス名)のインスタンスと呼ばれる
0845デフォルトの名無しさん2014/10/18(土) 07:03:01.65ID:3SSW63UD
>>804 の質問をしていた者です。

scoped_session()とsessionmakerを以下のように設定すると
検索での一定時間経過後のエラーは出なくなりました。

○ Session = scoped_session(sessionmaker(autocommit=True, autoflush=True, bind=engine))
× Session = scoped_session(sessionmaker(bind=engine))
× Session = scoped_session(sessionmaker(autocommit=False, autoflush=True, bind=engine))
○ Session = scoped_session(sessionmaker(autocommit=True, autoflush=False, bind=engine))
0846デフォルトの名無しさん2014/10/18(土) 07:06:57.69ID:3SSW63UD
>>818
ご指摘ありがとうございます。
知らなかったらどこかで躓いてしまうところでした。
0847デフォルトの名無しさん2014/10/18(土) 11:02:42.30ID:BJVqhy6o
クラスについては私も勉強中だけど、「Pythonスタートブック」の説明が比較的わかりやすかった。
超シンプルなクラスを、self抜きで作ってどうしてエラーが出るかって感じで説明してくれてる。
__init__についても同様。こっちは「初めてのPython 第3版」も理解しやすかったかな。
0848デフォルトの名無しさん2014/10/18(土) 11:31:53.24ID:5/nDFz0B
今日は宣伝日和
0849デフォルトの名無しさん2014/10/18(土) 12:06:27.65ID:/bV95tiS
C知ってる前提で教えて良いなら
selfはCではFILE*とかに相当すると思えば良い
0850デフォルトの名無しさん2014/10/18(土) 13:01:55.22ID:5xJiSuw7
初めてのPythonの原著の評価amazonでみたけど、日本語版と同じようなことになってたな
星5つけてるコメントですら、これだけ分厚い理由を説明させてくれとか初級者にはどうだろうみたいなこと書いてあってわらった
いい本なんだけどね・・
0851デフォルトの名無しさん2014/10/18(土) 13:07:11.05ID:5xJiSuw7
このコメントも面白かった
いいところ : Pythonの全てをカバーしてる
悪いところ: Pythonの全てをカバーしてる
ひどいところ: Pythonの全てをカバーしてる

ほんと、いい本はいい本なんだけどね・・
0852デフォルトの名無しさん2014/10/18(土) 13:10:43.43ID:jfF8Y5hT
>>839

Windowsの例

ESC = '\x1b'
import msvcrt
while True:
  print u'Loop中!'
  #ESCキーが押されたらloop抜け出る
  if msvcrt.kbhit():
    inp = msvcrt.getch()
    if (inp == ESC): break
0853デフォルトの名無しさん2014/10/18(土) 13:17:07.05ID:bNW/9j5P
正直Pythonは公式のドキュメントさえ読めば十分だとおも
0854デフォルトの名無しさん2014/10/18(土) 13:24:51.85ID:ldjzaz8r
self はレシーバへの参照
f = Foo(); f.m() ってしたら Foo.m(f) が呼ばれて
self にレシーバである f が入る。それだけ

って言われても狐につままれた気分に違いない
0855デフォルトの名無しさん2014/10/18(土) 14:39:22.87ID:mzkaImX0
>>854
なるほど
しっくりくる

クラスメソッドとかスタティックメソッドの説明が不足してるけど
0856デフォルトの名無しさん2014/10/18(土) 18:04:22.32ID:PLV+4ceY
そもそもスタティックメソッドは関数がない言語だから存在する名前
0857デフォルトの名無しさん2014/10/19(日) 15:22:01.29ID:A7yyoHDT
dicからイテレータを利用して取り出したいですが
i = iter(foo)
next(i)
これだとキーは取り出せますが、ほしいのはキーではなく値のほうなのです。
教えてください。
0858デフォルトの名無しさん2014/10/19(日) 15:40:15.81ID:n9kPv86G
foo[i.next()]
0859デフォルトの名無しさん2014/10/19(日) 15:46:13.06ID:A7yyoHDT
>>858
ありがとうございます。
私の環境では、foo[next(i)] で動きました。
0860デフォルトの名無しさん2014/10/19(日) 15:48:31.75ID:5cydbFt+
d.itervalues()
0861デフォルトの名無しさん2014/10/19(日) 18:22:53.59ID:7zD1n8to
i = iter(foo.values())
0862デフォルトの名無しさん2014/10/19(日) 20:44:40.80ID:io6vECig
質問させてください
dom = lxml.html.fromstring(html)
results = dom.xpath(xPath)
でやると取得結果がリストで出てきます
それはいいのですが、自分の使っているLinuxのPythonの使用で順不同で格納されてしまい困っています
これはどのようにすれば上から取得順に並べることができるのでしょうか?
0863デフォルトの名無しさん2014/10/19(日) 20:57:20.20ID:pAlNrbxL
>>843
回答ありがとうございます。
なるほど、分からないです。
前提知識が必要なので、今の段階で深く理解しようとしても、無駄かもしれないです。
ある程度いじくりながら、理解できる日を待ちます。
0864デフォルトの名無しさん2014/10/19(日) 21:20:07.23ID:5cydbFt+
>>862
ローカルに保存してある xml をパースしてもそうなるの?
できれば再現コードが欲しい
0865デフォルトの名無しさん2014/10/22(水) 16:27:03.07ID:FR4rCNdU
loggingモジュールを使ったロギングを試しているのですが
logger = logging.getLogger(__name__)
でログを取っている複数モジュールのログを一括して設定するにはどうやるのが一般的でしょうか

import a, b
logger = logging.getLogger(*)
logger.setLevel(logging.DEBUG)
...
的なことをしたいです
モジュールa,bは色々なところから呼ばれる予定です
0866デフォルトの名無しさん2014/10/22(水) 16:33:03.12ID:FR4rCNdU
単に引数無しでlogging.getLogger()ってすればいいだけでした・・・
ゴメンナサイゴメンナサイ
0867デフォルトの名無しさん2014/10/22(水) 17:19:22.15ID:09vRtLa/
報告乙
0868デフォルトの名無しさん2014/10/23(木) 03:57:22.24ID:Ji0zyhni
DBから書籍名を取ってきて以下のような日本語フォルダへのリンクをテンプレートに表示したい場合、1・2のどちらの方がいいでしょうか?

<a href="./書籍A/">書籍A</a>


1.DBから書籍名を取得してURLエンコードして書籍名を作り、両方をテンプレートに送る。

2.DBから書籍名を取得して書籍名をURLエンコードする自作の関数に送る。書籍名と返ってきた書籍名をテンプレートに送る。


2は回りくどい気がするのですが、似たような処理がある時には使い回しが出来そうなのでどちらが良いか迷っています。
0869デフォルトの名無しさん2014/10/23(木) 06:47:36.50ID:QsQhyUlJ
3.
テンプレには<my書籍Alink>みたいな記述をしておく
"<a href="./書籍A/">書籍A</a>"を返す自作関数をつくる
自作関数に書籍名を渡して返って来た文字列をテンプレに送る
0870デフォルトの名無しさん2014/10/23(木) 09:17:50.80ID:GQ45cZ/9
テンプレートエンジンは?
0871デフォルトの名無しさん2014/10/23(木) 09:56:54.18ID:Ji0zyhni
>>869
<my書籍Alink>の部分が初心者の私にはハイレベル過ぎて…。

>>870
jinja2です。

このブログ記事を参考にして作っています。
http://x1.inkenkun.com/archives/221
0872デフォルトの名無しさん2014/10/24(金) 16:23:10.66ID:xqerE7s/
Python Tools for VS
PTVS 2.0: A quick overview (2-4 mins per feature)
https://www.youtube.com/watch?v=JNNAOypc6Ek
0873デフォルトの名無しさん2014/10/24(金) 17:30:21.32ID:sqdwGTiq
俺の見てるスレに悉く貼ってんじゃねえ
0874デフォルトの名無しさん2014/10/24(金) 19:55:56.42ID:sV6ypEtj
>>873は激務で疲れてて自覚がないんだろうけど、
>>872はお前だよ?
気づいてなかったの?
0875デフォルトの名無しさん2014/10/24(金) 20:13:39.60ID:tktTiC6I
いつの間にか人格が分裂していたのか
0876デフォルトの名無しさん2014/10/24(金) 20:26:13.39ID:geiPH72p
漏れもたまに寝てる間に自分で書いたんじゃないかと思うスレをみかけることがある
0877デフォルトの名無しさん2014/10/24(金) 20:27:37.89ID:geiPH72p
スレじゃなかった
レスだ
0878デフォルトの名無しさん2014/10/26(日) 20:39:38.29ID:riJkIcxu
すごい大きい辞書をpickleで保存しています
デバッグなどでその辞書を使うモジュールを何回も実行する必要があるとき,
実行する度に一からこのデータをメモリに載せるのですごく時間がかかってしまいます
最初の一回だけデータをメモリ上に載せておいて,モジュールを実行するときにはそれを呼び出すような方法ってありますか?
0879デフォルトの名無しさん2014/10/26(日) 21:29:38.02ID:zGPdvemQ
>>878
def getDic(static=[]):
 if static:
  d = static[0]
 else:
  with open("picklefile", "rb") as f:
   d = pickle.load(f)
  static.append(d)
 return d
0880デフォルトの名無しさん2014/10/27(月) 08:45:28.81ID:h6rnjEJC
>>878
cPickle
使ってる?

> 実行する度に一からこのデータをメモリに載せる
って、詳細を考えると「読み込み」と「変換」があるけど、知ってました?

disk ==> on memory(=data)
の read に時間がかかってるとは思わなかったり。

data ==> Python object
の変換に時間がかかってるんじゃないの?

s1 = datetime.datetime.now()
with open("a.txt") as f:
data = f.read()
e1 = datetime.datetime.now()

s2 = datetime.datetime.now()
d = cPickle.loads(data)
e2 = datetime.datetime.now()

(e1 - s1).total_seconds()
(e2 - s2).total_seconds()

len(data)

↑で、disk => on memory の所要時間計測した上での話?

参考までに、
len(data)
の値を教えて欲しかったり。
0881デフォルトの名無しさん2014/10/27(月) 08:52:19.95ID:52HwiArl
まさかファイルだけ読んで辞書にしないでメモリに置くと思ってるの?
後者の話に決まってるじゃん
0882デフォルトの名無しさん2014/10/27(月) 21:28:52.19ID:fzHl9qmN
>>878
コード的に簡単なのは、インタプリタを動かして、その pickle ファイルを読み込んで辞書にしておいて、
デバッグは、スクリプトを import して main() を呼び出すときにその辞書を引数で渡せるようにする。
ってとこかな。
0883デフォルトの名無しさん2014/10/28(火) 00:27:51.08ID:tEBKTM0x
UTCで年月日時だけを表示する方法は無いでしょうか
分と秒はいらないんです
0884デフォルトの名無しさん2014/10/28(火) 00:29:47.95ID:ojgQDR0D
strftime
0885デフォルトの名無しさん2014/10/30(木) 22:59:39.13ID:HS4ua6vI
【プログラミング言語別!】求人給与額ランキング
http://hrog.net/2014102910652.html
0886デフォルトの名無しさん2014/10/30(木) 23:03:18.90ID:isG01Zqw
python覚えて高年収な人ってスキルがずば抜けてる人ぐらいだろ
0887デフォルトの名無しさん2014/10/30(木) 23:24:23.71ID:PI4dm/7f
相変わらずPHPとJavaばっかだね
Rubyはやっぱり声がでかいだけだった
0888デフォルトの名無しさん2014/10/30(木) 23:45:16.46ID:dZ1XAJfS
>>885
安すぎだろ
0889デフォルトの名無しさん2014/10/30(木) 23:47:05.44ID:lt8zMZcQ
>>886
そんなことない
スキル普通な個人事業主だけど、消費税払ってる
0890デフォルトの名無しさん2014/10/30(木) 23:55:28.58ID:Hek/m3sU
>>885のランキングの考察が当たってるなら、"日本では" Pythonプログラマーが不足してるから
その供給不足で値段が上がってるだけみたいじゃん。
0891デフォルトの名無しさん2014/10/30(木) 23:55:35.10ID:isG01Zqw
日本語でおk
0892デフォルトの名無しさん2014/10/31(金) 00:13:48.49ID:KvLV+3P1
>>891
どのスレに言ってんの?
0893デフォルトの名無しさん2014/10/31(金) 01:23:34.23ID:3qU5wYGK
このスレじゃね
0894デフォルトの名無しさん2014/10/31(金) 01:24:30.35ID:pjs8kMNX
なんでこういうの平均ばっかり挙げるんだろう、せめて最小最大中央値辺りみたいじゃん
0895デフォルトの名無しさん2014/10/31(金) 03:39:39.85ID:P9Nu5aP4
この結果を受けてPython関連の書籍がたくさん出版されたら嬉しい。
0896デフォルトの名無しさん2014/10/31(金) 07:22:03.28ID:7zJ4k6z8
牌が無いのが判明したんだから
減りこそすれ増えるわけがない

同じデータを見てるのに
どうしてこう見当違いの分析をしてしまうのか
0897デフォルトの名無しさん2014/11/01(土) 08:31:19.58ID:90vZMt3f
需要が増えたのか供給が少ないのかはこのデータからはわからないだろうが
0898デフォルトの名無しさん2014/11/01(土) 09:10:39.66ID:VFzoWWB5
これだけ衝撃的に少ないなら
そんな誤差を加味しても大勢に影響はない

それともなんだ、サイレントマジョリティを考慮に入れるとPHP抜くのか?
0899デフォルトの名無しさん2014/11/01(土) 09:13:47.40ID:N73zy/Fb
ぺちぱー
0900デフォルトの名無しさん2014/11/02(日) 20:06:38.84ID:SOlT2V06
pythonをやろうと思うのですが、入門書は何がいいでしょか? あと、アドバンスド(上級者向け)でいいのありますか?
プログラム経験はありです(C、C++)。
0901デフォルトの名無しさん2014/11/02(日) 20:09:22.82ID:q60nWMQW
pythonのドキュメントで十分だと思うけど
0902デフォルトの名無しさん2014/11/02(日) 20:15:29.95ID:YUqViWJV
プログラム経験あればドキュメントだけで余裕
0903デフォルトの名無しさん2014/11/02(日) 20:19:26.23ID:SOlT2V06
ts
0904デフォルトの名無しさん2014/11/03(月) 03:25:54.23ID:Di6XQAPl
>>900
C,C++できるなら
わからなくなったらググればいい。
どうしても本欲しいなら導入だけ立ち読みしてこい
0905デフォルトの名無しさん2014/11/03(月) 05:09:22.47ID:VWaLlR99
このスレの人はRubyスレの人と比べて親切だから
色々教えてくれるのでありがたい
0906デフォルトの名無しさん2014/11/03(月) 09:30:07.60ID:QyHwFOCC
こんなところで聞くレベルのくせに上級者向けとかギャグか
0907デフォルトの名無しさん2014/11/03(月) 10:29:38.49ID:nLUJkLOA
Windows環境で2.7を試しています。
パイプでMoreに流したときに出る
Error 32 Broken pipe
対策はどの様にすればいいですか?

linuxで動いたSIGDFLすげ替えは動かないです。
0908デフォルトの名無しさん2014/11/03(月) 10:51:57.75ID:Avy9gAi6
codecsが合ってないとか?
0909デフォルトの名無しさん2014/11/03(月) 10:52:38.02ID:1DGR/mlS
python Error 32 Broken pipe
ググレばたくさん情報出てきたけど
0910デフォルトの名無しさん2014/11/03(月) 12:21:46.10ID:/LBlrvfE
cmdじゃなくてmsysのbashとかでも出るの?
0911デフォルトの名無しさん2014/11/03(月) 16:15:22.47ID:uequofEA
>パイプでMoreに流したときに

あるある
0912デフォルトの名無しさん2014/11/03(月) 17:29:57.88ID:ZPswqtEs
Linuxで2.7のモジュール使いたいのに標準で入ってる2.6がインストールされるんですけど
どうにか対処ってできないでしょうか・・・
0913デフォルトの名無しさん2014/11/03(月) 17:35:18.77ID:0K+wdDei
どうにかって何
会社のマシンだから勝手にインストール出来ないみたいな野暮ったい話だったらよそで頼む
0914デフォルトの名無しさん2014/11/03(月) 17:42:38.10ID:DIbDX8rG
>909
いえ、ググって出てきたimport Signalの対処方法は
Windows側だとエラーになります。
linux側だと動いたのですが。

Windowsでの対処方法をご存知でしたら教えてください。
0915デフォルトの名無しさん2014/11/03(月) 18:00:36.84ID:dwLQKZMT
ID変わってるから偽物
0916デフォルトの名無しさん2014/11/03(月) 18:01:38.54ID:fCTDh+nn
は?雑魚は帰れよ
0917デフォルトの名無しさん2014/11/03(月) 18:25:53.05ID:h0bCYlRL
パイプを通るデータのエンコードが合ってないとbrokenになる(ことがある)よ
0918デフォルトの名無しさん2014/11/03(月) 19:57:32.33ID:s8zBySEA
>>912
pyenv
0919デフォルトの名無しさん2014/11/04(火) 00:08:00.58ID:mqsyZeNn
Python勉強したらRubyも勉強する必要ある?
0920デフォルトの名無しさん2014/11/04(火) 00:09:52.29ID:IGG5lb2v
ない
0921デフォルトの名無しさん2014/11/04(火) 01:37:33.87ID:UXBRaFUR
初心者でも作れるプログラムって何?
たくさん書けって言うけどなにができるんかわからん。
0922デフォルトの名無しさん2014/11/04(火) 01:44:22.22ID:YXHSIUkB
>>921
これとかどうよ?時間あったらやってみたら

http://www.ioi-jp.org/joi/problem_archive-light.html
0923デフォルトの名無しさん2014/11/04(火) 01:44:27.18ID:4hH2Cezv
誰がそんなこと言ったの
0924デフォルトの名無しさん2014/11/04(火) 02:09:55.22ID:UXBRaFUR
>>922
やってみる。ありがとうございます。

>>923
おれにいってる?
誰というか、ブログとか読み漁ってるとそう言う人が多い。自分の個人の印象だが。
「たくさん書け」というのは、文章も書くことで上達するから妥当性あるかなとは思うけど
畑も違う初学者には辛いお言葉・・。それでも、多くの人は身に着けていったのだから言い訳かなぁ。
0925デフォルトの名無しさん2014/11/04(火) 04:50:49.89ID:UYsaPI6O
間違ったものをたくさん書いても
間違った書き方が身に付くだけ
0926デフォルトの名無しさん2014/11/04(火) 07:10:54.42ID:5vxSHexS
Python標準リリース - 日本Pythonユーザ会
ttp://www.python.jp/Zope/Zope/download/pythoncore

最新バージョン
Windows用インストーラ
python-3.3.0.msi

最新バージョンを入れたはずなのに

ttp://toro.2ch.net/test/read.cgi/tech/1350718465/631+634
> 631 python: failed to set __main__.__loader__

> 634 それバグ  自分でパッチあててビルドしないと直らない

とかあってびびったけど
ttp://www.python.org/downloads/
見たら 3.4.2 ってのがあって、それダウンロードしたらちゃんと動いたよかったメモ。

ttp://toro.2ch.net/test/read.cgi/tech/1350718465/3
> 最新版直リン - 2.Xが推奨。3.Xはライブラリやドキュメントが使えないことも

やっぱり初心者はお勧め通りにするのがよさげ
0927デフォルトの名無しさん2014/11/04(火) 07:28:04.75ID:SfeupY3V
最新バージョン(最新とは言ってない)
0928デフォルトの名無しさん2014/11/04(火) 08:25:39.67ID:DEPGQlXz
3.3って1年以上前じゃねえの
陳腐化した情報さらし続けるって最悪だよな
検索してて思うが、どれだけ世間の時間を無駄にさせてんだろ
0929デフォルトの名無しさん2014/11/04(火) 09:38:44.93ID:obX3t5pP
2.*のときはもっとひどかったよ
0930デフォルトの名無しさん2014/11/04(火) 11:00:55.30ID:QoBkJ2+Q
>>928
二年以上前

3.3の最新なのかと思ったら3.3.0だし、本当に放置してるんだな
3.3.0からだと脆弱性含めて結構な量の修正入ってるぞ
https://docs.python.org/3.3/whatsnew/changelog.html

最新ニュースが↓だし、移転作業で力尽きたのかな
>2012年8月18日、www.python.jpサーバを移転いたします。
>....
>大規模なリニューアルを行いたいと思ってますので、しばらくお待ち頂きますよう、お願いいたします。
(http://www.python.jp/Zope/Zope.1%3Cscript%3Ealert%28%29;%3C/script%3E)
0931デフォルトの名無しさん2014/11/04(火) 11:01:55.66ID:QoBkJ2+Q
変なのまじった
http://www.python.jp/Zope/Zope.1
0932デフォルトの名無しさん2014/11/04(火) 11:04:25.64ID:srrbBYWq
pyenv使ってる時に複数の仮想環境にipythonを入れてるんですけど
それぞれの環境ごとにipythonの起動時の処理を記述する方法をおしえてください
何個仮想環境を作ってもipythonの設定ディレクトリって~/.ipythonにしか作られないので
~/.ipython/profile_default\startup\init.pyに書くわけには行きません
0933デフォルトの名無しさん2014/11/04(火) 11:21:01.17ID:MltjHLVy
>>930
移転先は更新されてる
放置されてる古いドキュメントなんて消すか
新しいトップに飛ばすかすればいいのに
0934デフォルトの名無しさん2014/11/04(火) 11:21:50.23ID:xwPH9Juu
ゲームエンジン用に、pythonでパーティクルシステムを作りたいのですが、数学的にどのあたりの知識が必要なんですか?
0935デフォルトの名無しさん2014/11/04(火) 22:57:05.03ID:nb8eURc5
なんで>>1でちゃんと今のpython.jpのURL書いてあんのに古臭いの見て騒いでんのよ。
まあそもそも>>933の言うとおりなんだけど。
0936デフォルトの名無しさん2014/11/04(火) 23:06:44.25ID:5vxSHexS
ぐぐったらあそこが出てきて(震え
0937デフォルトの名無しさん2014/11/05(水) 00:02:52.86ID:X+gBZ2Cn
http://python.rdy.jp/ の公式サイト→日本ユーザー会のリンク先が http://www.python.jp/Zope/ なんだが
0938デフォルトの名無しさん2014/11/05(水) 01:47:22.74ID:5zCHFfkS
>>937
だからなに?
それはそのWikiに文句言う話じゃん。
0939デフォルトの名無しさん2014/11/05(水) 01:48:07.33ID:9gbL5eJJ
ところで、共用体を使おうとするとクラッシュするんですが
ググっても全然出てこないし、使ってないんですかね。

構造体の場合
<Field type=c_ulong, ofs=0, size=4>
<Field type=c_float, ofs=4, size=4>
c_float 型に データ投入
<Field type=c_ulong, ofs=0, size=4>
0.5468

共用体の場合
<Field type=c_ulong, ofs=0, size=4>
<Field type=c_float, ofs=0, size=4>
c_float 型に データ投入
<Field type=c_ulong, ofs=0, size=4>
ここでクラッシュ

↓ここの浮動小数点を使う方法を試したかっただけですが。

ビットを数える・探すアルゴリズム
ttp://www.nminoru.jp/~nminoru/programming/bitcount.html
0940デフォルトの名無しさん2014/11/05(水) 01:53:05.20ID:X+gBZ2Cn
> なんで>>1でちゃんと今のpython.jpのURL書いてあんのに

古いままだってこと
0941デフォルトの名無しさん2014/11/05(水) 01:59:29.69ID:5zCHFfkS
>>940
何が?
0942デフォルトの名無しさん2014/11/05(水) 08:08:27.65ID:IDA7DBTr
>>935へのツッコミだろう
お勉強スレの>>1には移転先のリンクがあるけど
このスレだけ見てても辿りつけない
0943デフォルトの名無しさん2014/11/05(水) 09:45:13.65ID:6cY/hPez
>>939
""
0944デフォルトの名無しさん2014/11/05(水) 12:01:37.33ID:9gbL5eJJ
>>943
.asString() でキャストするのは ctypes では出来ないらしく
str()もcast()もクラッシュします。

コードはこんな感じ

from ctypes import *
#class utest(Structure):
class utest(Union):
pass

utest._fields_ = [("i", c_uint),
("f", c_float)]

print(utest.i)
print(utest.f)

#utest.f = 0.5468
utest.f = cast(0.5468,c_float)  ←これはミス
utest.i
print(utest.i)
#これ以降がクラッシュしたり
type(utest.f)
utest.f
print(str(utest.f))
print(cast(utest.f,c_float))
0945デフォルトの名無しさん2014/11/05(水) 12:38:23.31ID:IDA7DBTr
x = utest(f=0.5468)
0946デフォルトの名無しさん2014/11/05(水) 12:39:09.97ID:Ez8Dh1St
なんでutestのインスタンス作らないで直接代入してるの?
0947デフォルトの名無しさん2014/11/05(水) 13:15:47.45ID:9gbL5eJJ
できました。感謝。なるほどなるほどー
基本を押さえてないのに共用体で検索してたから実際のコードがさっぱり出てこなくて。

x = utest(f=0.5468)
print(x)
print(x.i)
print(x.f)

<__main__.utest object at 0x02E88D50>
1057749782
0.5468000173568726
0948デフォルトの名無しさん2014/11/05(水) 13:28:25.60ID:DV/kt5fe
[1,2,3,4,5,6,....,100]
のようなリストを作りたいとき、どうやって記述するのが普通でしょうか?
range(1,101)と書いて作成できるのはわかりましたが、1〜100のリストなのに101がでてきてしっくりきません
なのでほかの書き方があるのではないかと思い質問してます
0949デフォルトの名無しさん2014/11/05(水) 13:32:30.37ID:DuWLTClA
range(1, 101)には101は含まれないけど
0950デフォルトの名無しさん2014/11/05(水) 13:33:05.30ID:DuWLTClA
n = 100
range(1, n+1)
0951デフォルトの名無しさん2014/11/05(水) 13:43:14.04ID:DV/kt5fe
[5,6,...,10]だったら
n=10
range(5,n+1)
とするのでしょうか?
うーんなんか結局直観的じゃなくてすっきりしないですね
0952デフォルトの名無しさん2014/11/05(水) 14:00:40.81ID:6PdTuYg9
5 から 10 まで数字は 6 個あるだろ
だから
for x in range(6):
print 5 + x
きわめて直観的で判り易いじゃないか
0953デフォルトの名無しさん2014/11/05(水) 14:20:23.38ID:DuWLTClA
郷に入れば郷に従わないと
こんなところで足止めするようなレベルではない
0954デフォルトの名無しさん2014/11/05(水) 14:29:16.83ID:YyHvdJxm
>>948 は未だ0を発見出来ていない中世ヨーロッパ人程度の知能
0955デフォルトの名無しさん2014/11/05(水) 14:37:31.07ID:DV/kt5fe
>>953
その従うべき郷を知りたかったので質問させてもらった次第です
>>952
要素数から考えるというのはたしかにしっくりしました
こんな風にすればよいですね
ありがとうございます
[i+1 for i in range(100)]
[i+5 for i in range(6)]
0956デフォルトの名無しさん2014/11/05(水) 14:41:17.26ID:3/LWbB06
(ネタだと思いたい)
0957デフォルトの名無しさん2014/11/05(水) 14:42:51.60ID:DV/kt5fe
>>956
この結論は間違っているということ?
0958デフォルトの名無しさん2014/11/05(水) 14:46:01.80ID:0NbMP57G
>>948 は IT 土方の VBer
0959デフォルトの名無しさん2014/11/05(水) 14:49:41.62ID:0NbMP57G
>>957
得られる結果は同じでも
計算量は確実に増えてるんじゃね
0960デフォルトの名無しさん2014/11/05(水) 14:49:47.70ID:DV/kt5fe
土方や知能は否定しませんので教えてほしいです
みなさんは以下の関数をどう書くのでしょうか?

・5以上10以下の整数を含むリストを戻り値として返す関数
0961デフォルトの名無しさん2014/11/05(水) 14:55:16.74ID:qk8qyFWi
>>960

python2 -> range(-5, 11)
python3 -> list(range(-5, 11))
0962デフォルトの名無しさん2014/11/05(水) 14:58:30.07ID:0NbMP57G
>>> def g(min, max):
......n = min
......while n <= max:
........yield n
........n += 1
...
>>> f = lambda min, max: list(g(min, max))
>>> f(5, 10)
[5, 6, 7, 8, 9, 10]
0963デフォルトの名無しさん2014/11/05(水) 14:59:19.11ID:3/LWbB06
a = range(5, 10); a.append(10)
0964デフォルトの名無しさん2014/11/05(水) 15:19:54.48ID:zEGSOnRu
irb(main):001:0> 5..10
=> 5..10
irb(main):002:0> (5..10).class
=> Range
irb(main):003:0> (5..10).to_a
=> [5, 6, 7, 8, 9, 10]
0965デフォルトの名無しさん2014/11/05(水) 16:18:08.94ID:rjAy3mh6
>>964
おかえりください
てんてんなのかてんてんてんなのかいまだにおぼえられません
0966デフォルトの名無しさん2014/11/05(水) 16:20:58.05ID:XPxSL9Pk
次スレはよ
0967デフォルトの名無しさん2014/11/05(水) 16:21:43.43ID:eEJxm3Ur
sageteoffでな
0968デフォルトの名無しさん2014/11/05(水) 16:41:41.95ID:Awvl8HhM
くだすれPython(超初心者用) その25©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1415173201/
0969デフォルトの名無しさん2014/11/05(水) 18:57:17.88ID:J5dkBHi7
>>960
>>> def f(n, m):
return list(range(n, m + 1))

>>> f(5, 10)
[5, 6, 7, 8, 9, 10]

>>> l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> l[5:11]
[5, 6, 7, 8, 9, 10]

直感的じゃないとかいってないで慣れた方がいいと思う
むしろシーケンス型の要素の指定ってインデックス(0から数えて何番目)で指定するもんだし
0970デフォルトの名無しさん2014/11/05(水) 19:07:16.44ID:IDA7DBTr
逆にrandom.randintは何故存在するのか
0971デフォルトの名無しさん2014/11/05(水) 19:51:09.90ID:FFOVrxV7
randintは(]
0972デフォルトの名無しさん2014/11/05(水) 20:52:34.31ID:rjAy3mh6
range が [ ) で randint は [ ] じゃなくて?
0973デフォルトの名無しさん2014/11/05(水) 21:45:48.79ID:85jo8McV
(ネタだと思いたい)
0974デフォルトの名無しさん2014/11/05(水) 22:19:11.44ID:aqzat7V7
(ネタ]
0975デフォルトの名無しさん2014/11/06(木) 06:23:09.51ID:oudJfJTT
[ネタニエフ)
0976デフォルトの名無しさん2014/11/06(木) 07:23:09.40ID:1AJgCGK+
>>962-963
超初心者用スレなんだから
ネタ回答でレスするのはやめとけ
0977デフォルトの名無しさん2014/11/06(木) 07:37:07.63ID:z2wp3D5L
range [) わかる
randrange [) わかる
randint [] は?
0978デフォルトの名無しさん2014/11/06(木) 09:49:12.99ID:Jg48RgBo
randint()が気に入らないなら
choice(range())を使えば良い
0979デフォルトの名無しさん2014/11/06(木) 09:50:59.46ID:Jg48RgBo
ああこっちがいいか

random.randrange([start], stop[, step])
range(start, stop, step) の要素からランダムに選ばれた要素を返します。
この関数は choice(range(start, stop, step)) と等価ですが、実際には range オブジェクトを生成しません。
バージョン 1.5.2 で追加.

random.randint(a, b)
a <= N <= b であるようなランダムな整数 N を返します。
0980デフォルトの名無しさん2014/11/06(木) 17:48:59.22ID:vn52qUON
「みんなのPython webアプリ編」がhtmlで読めるようになったとツイートされまくってますが、なぜあんなに騒がれているのでしょうか?

情報が古過ぎてあまり役に立たないと思うのですが。
0981デフォルトの名無しさん2014/11/06(木) 17:51:14.34ID:i9PeqnZd
Twitterの愚民なんていつもくだらんこと喋ってるでしょ
気にせんでよろしい
0982デフォルトの名無しさん2014/11/06(木) 17:51:24.65ID:ntLQp+bs
同意します
0983デフォルトの名無しさん2014/11/06(木) 18:40:10.70ID:aYOy4vHI
>>980
質問してるふりをした宣伝乙
0984デフォルトの名無しさん2014/11/06(木) 21:24:23.07ID:vn52qUON
>>983
ありがとうございます。
大変悲しい気分になりました。
0985デフォルトの名無しさん2014/11/06(木) 22:30:43.53ID:M0f05I/w
さすが便所の落書き
0986デフォルトの名無しさん2014/11/06(木) 23:14:10.14ID:hvhAxXTC
ステマ臭しかしねえ
0987デフォルトの名無しさん2014/11/07(金) 19:55:22.25ID:hhmEWezK
>>986
ソフトバンクが嫌いなのでソフトバンククリエイティブの本を宣伝する気なんてさらさらありません。
0988デフォルトの名無しさん2014/11/07(金) 20:07:33.70ID:ZGbVWO01
上の口ではそんなこと言ってますが…
0989デフォルトの名無しさん2014/11/08(土) 09:33:36.81ID:3dfXBQLl
>>987
気持ち判ります
わたしも出来るだけ避けてます
レス数が950を超えています。1000を超えると書き込みができなくなります。