10

Pythonでは、「x in」変数なしでこのリスト内包表記を書く方法はありますか(完全に未使用のままになっているため)?同じことがジェネレータ式にも当てはまります。これが頻繁に発生することはないと思いますが、私はこれに何度か遭遇し、知りたいと思っていました。

次に例を示します。

week_array = ['']*7
four_weeks = [week_array[:] for x in range(4)]

(また、これを構築するためのよりエレガントな方法はありますか?)

4

4 に答える 4

19

私はそうは思いませんし、に害はありませんx。このように値が使用されていない場合によく見られるのは、自由変数としてアンダースコアを使用することです。たとえば、次のようになります。

[week_array[:] for _ in range(4)]

しかし、free 変数が使用されないことを示すのは慣例にすぎません。

于 2012-06-29T11:45:08.703 に答える
3

いいえ。値が使用されていない場合でも、両方の構成にイテレータが必要です。

于 2012-06-29T11:43:18.850 に答える
1
week_array = ['']*7
four_weeks = map(list, [week_array]*4)
于 2012-06-29T11:54:06.293 に答える
0

これは、マップを使用するという点で他の回答と似ていますが、私が行ったことは、あなたが使用しているのと同じ機能を使用しています。

four_weeks = map(lambda i: week_array[:], range(4))

_また、たとえばを使用する場合と比較した場合の主な利点は、既に使用されている可能性があり ( _gettext で頻繁に使用されます)、その値を反復子の最後の項目に変更することです。次の例を参照してください。

[x for x in range(4)]
assert x == 3, 'x should be equal to 3'
于 2012-06-29T12:05:26.213 に答える