- くだすれPython(超初心者用) その24
447 :デフォルトの名無しさん[sage]:2014/09/13(土) 10:23:27.54 ID:6NBWszmd - >>446
listが空かどうかの判定と、等号を組み合わせることあるの?
| - くだすれPython(超初心者用) その24
454 :デフォルトの名無しさん[sage]:2014/09/13(土) 19:49:14.17 ID:6NBWszmd - >>432
1番良い方法を教えて下さいって奴に 複数の方法を教えるってなんだいそれ? しかもまとまってないし。 複数の方法をダラダラ並べてるだけだ。 >>451 の書いてる通り、 if isinstance(obj, list) and not list: が「1番」いいんじゃないの?
| - くだすれPython(超初心者用) その24
455 :デフォルトの名無しさん[sage]:2014/09/13(土) 19:52:31.44 ID: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))) 正確な話を知りたければ、本家に行って実装を聞くしかないんじゃない?
| - Pythonのお勉強 Part49
757 :デフォルトの名無しさん[sage]:2014/09/13(土) 20:08:53.94 ID:6NBWszmd - >>753
Python3 だとこんなに簡単に書けるんだよ。 2.5 なんてやめて 3 に移行しなきゃ if __name__ == "__main__": import itertools L = ["あ","いう","えおか","き","くけこ"] for i in range(2, len(L) + 1): print("i= {}".format(i)) combis = itertools.combinations(L, i) tup = tuple(combis) print(tup) print()
|
|