11/12/10 18:51:00.29
>>152
[ random.random(), random.random() ]を三回繰り返してるだけ
154:デフォルトの名無しさん
11/12/10 19:16:18.53
>>153
返答ありがとうございます
printしてみたら、[ random.random(), random.random() ]が3回表示されたので、
挙動は分かったのですが、何故そうなるのかが分かりません
Pythonの場合、for()等で他の言語のように第2引数によって条件などが入りませんが、
そのおかげでこの挙動が自分には理解が出来ません
foo = [ x * 2 for x in range(3) ]の場合は、x * 2にforで得られたxの値が入るに対し、
2つ目のlocの式は何故n回だけ実行されるのかが分かりません
URLリンク(python.g.hatena.ne.jp)
このサイトなどで書かれているのもやはり、x,y等の対応する変数が存在するので挙動は分かるのですが、
locのようなものを解説しているサイトや本を見つけられませんでした
155:デフォルトの名無しさん
11/12/10 19:26:35.76
>>154
for ループの仕組みから理解できていないんじゃないか?
for i in [0, 1, 2] の場合、0, 1, 2を順番にiに代入していき、全て終わったらループが止まる
そのlocの例の場合はiが使われていないだけ
loc = [[ random.random(), i ] for i in range(3) ] とでもしてみれば分かりやすいかな?
156:デフォルトの名無しさん
11/12/10 19:33:13.00
>>155
あっ、ようやく分かりました
ありがとうございました
157:デフォルトの名無しさん
11/12/10 19:56:05.83
python setup.py buildとpython setup.py installはどう違うのですか?
webで検索していると、ライブラリによってはインストール時にbuildの場合とinstallの場合があるようですが
158:デフォルトの名無しさん
11/12/10 19:57:39.11
WindowsでPythonをbatファイルの替わりに使いたいんだけど、
batでdosコマンドを実行したときのように
実行経過を表示することはできるのでしょうか?
159:デフォルトの名無しさん
11/12/10 20:48:38.43
?
160:デフォルトの名無しさん
11/12/10 22:30:23.27
[r["text] for result in search_results for r in result["results"]]
というコードがあるのですが左から順にfor文の内容が実行されていってるようなのですが
リスト内包表記では右から実行される訳ではないんでしょうか?
161:デフォルトの名無しさん
11/12/10 22:41:59.21
簡単な例で試すといいよ
>>> [(i, j) for i in [1, 2, 3] for j in [4, 5, 6]]
[(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)]
162:デフォルトの名無しさん
11/12/10 22:44:56.32
左からで正しいよ
[f(x,y) for x in xs for y in ys if cond(x, y)]
こういうのは
ループで言うと、
for x in xs: for y in ys: if cond(x, y): yield f(x,y)
これと一緒だと思えばいい
要はyieldする式が先頭かケツかの違いだけで、普通のループと同じ読み方ができる
163:デフォルトの名無しさん
11/12/10 22:54:27.12
>>161-162
回答ありがとうございます。
どうやら重大な勘違いをしていたようで助かりました。
164:デフォルトの名無しさん
11/12/10 23:04:33.40
>>157
ビルドは環境を構成するだけ (buildディレクトリ)
コンパイルしたりするのはここ。
インストールはsite-packages等へビルドされた環境をコピー
この時ビルドがまだならビルドする。
インストール以外にも配布用のパッケージを作成したりインストーラを生成したりもできる。
165:デフォルトの名無しさん
11/12/12 20:57:14.04
>>158
馬鹿には無理
166:デフォルトの名無しさん
11/12/12 21:40:17.79
以下のソースを作成し、
import csv
reader = csv.reader(file("some.csv", "rb"))
for row in reader:
print row
以下のように実行するとエラーが出ます。
なぜか原因が全くわかりません。
$python csv.py
Traceback (most recent call last):
File "csv.py", line 1, in <module>
import csv
File "/home/aaa/csv.py", line 2, in <module>
reader = csv.reader(file("some.csv", "rb"))
AttributeError: 'module' object has no attribute 'reader'
なんでだ・・・
167:デフォルトの名無しさん
11/12/12 21:50:13.36
csv.pyの名前を変える
168:デフォルトの名無しさん
11/12/12 21:51:33.12
>>167
それ、さっきやりましたがダメでした。
169:デフォルトの名無しさん
11/12/12 21:55:23.67
print csv.__file__
をやってみる。
170:デフォルトの名無しさん
11/12/12 22:45:03.45
>>166
fileじゃなくてopen?
×
reader = csv.reader(file("some.csv", "rb"))
○
reader = csv.reader(open("some.csv", "rb"))
csv弄る用事があるのを思い出したw
171:デフォルトの名無しさん
11/12/12 23:27:25.60
いろいろセンスのなさが目立つな
172:デフォルトの名無しさん
11/12/12 23:28:04.27
わざとやってるんじゃなかったのか。
173:デフォルトの名無しさん
11/12/12 23:33:23.10
>>170
openは内部的にfileを呼んでるだけだから、
その2つの例はまったく同じことをやっているだけ。