タグ付けされた質問 「list-comprehension」

数学的なセットビルダー表記に似たスタイルでリストを作成する簡潔な方法を提供する構文構造。複数の言語がリスト内包表記をサポートしているため、このタグをプログラミング言語のタグと組み合わせて使用​​してください。


10
リスト内包表記のif / else
Pythonで次のようにするにはどうすればよいですか? row = [unicode(x.strip()) for x in row if x is not None else ''] 基本的に: すべてのNoneを空の文字列に置き換え、次に 機能を実行します。




8
Python辞書の理解
Pythonで(キーの)辞書内包を作成することは可能ですか? リスト内包表記がなければ、次のようなものを使用できます。 l = [] for n in range(1, 11): l.append(n) これをリスト内包表記に短縮できますl = [n for n in range(1, 11)]。 しかし、辞書のキーを同じ値に設定したいとします。できます: d = {} for n in range(1, 11): d[n] = True # same value for each 私はこれを試しました: d = {} d[i for i in range(1, 11)] = True しかし、私はSyntaxError上に乗るfor。 さらに(この部分は必要ありませんが、疑問に思っています)、次のように、辞書のキーをさまざまな値の束に設定できます。 …

10
Pythonにタプルの理解がないのはなぜですか?
ご存知のように、リスト内包表記があります。 [i for i in [1, 2, 3, 4]] 次のような辞書の理解があります {i:j for i, j in {1: 'a', 2: 'b'}.items()} だが (i for i in (1, 2, 3)) tuple理解ではなくジェネレータになってしまいます。何故ですか? 私の推測では、a tupleは不変ですが、これは答えではないようです。

6
リストで最も長い文字列を選択するPythonの最も効率的な方法は?
可変長のリストがあり、現在評価されているリストアイテムがリストに含まれる最も長い文字列であるかどうかをテストする方法を見つけようとしています。そして、私はPython 2.6.1を使用しています 例えば: mylist = ['abc','abcdef','abcd'] for each in mylist: if condition1: do_something() elif ___________________: #else if each is the longest string contained in mylist: do_something_else() 確かに、私が見落としている、簡潔でエレガントなシンプルなリストの理解がありますか?

10
リスト内包表記の二重反復
Pythonでは、次のように、リスト内包に複数のイテレータを含めることができます。 [(x,y) for x in a for y in b] いくつかの適切なシーケンスaおよびbの場合。Pythonのリスト内包表記のネストされたループのセマンティクスを知っています。 私の質問は次のとおりです。内包の1つの反復子が他の反復子を参照できますか?言い換えれば、私はこのようなものを持つことができます: [x for x in a for a in b] 外側のループの現在の値は内側のイテレータですか? 例として、ネストされたリストがある場合: a=[[1,2],[3,4]] この結果を達成するためにリスト内包表記はどうなるでしょう: [1,2,3,4] ?? (これは私が知りたいことなので、理解度の答えのみをリストしてください)。

12
ネストされたリストの理解をリスト化しますか?
私はこのネストされたリストを持っています: l = [['40', '20', '10', '30'], ['20', '20', '20', '20', '20', '30', '20'], ['30', '20', '30', '50', '10', '30', '20', '20', '20'], ['100', '100'], ['100', '100', '100', '100', '100'], ['100', '100', '100', '100']] 次に、リストの各要素を浮動小数点に変換します。私の解決策はこれです: newList = [] for x in l: for y in x: newList.append(float(y)) しかし、これはネストされたリスト内包表記を使用して行うことができますか? 私がやったことは: [float(y) …


5
1行リスト内包表記:if-elseバリアント
それはpythonリスト内包構文に関するものです。特定の範囲の奇数のリストを生成するリスト内包を持っています。 [x for x in range(1, 10) if x % 2] これによりフィルターが作成されます-ソースリストがあり、偶数(if x % 2)を削除しています。ここではif-then-elseのようなものを使用したいと思います。次のコードは失敗します: >>> [x for x in range(1, 10) if x % 2 else x * 100] File "<stdin>", line 1 [x for x in range(1, 10) if x % 2 else x * 100] ^ SyntaxError: …

5
クラス定義のリスト内包からクラス変数にアクセスする
クラス定義内のリスト内包から他のクラス変数にどのようにアクセスしますか?以下はPython 2では機能しますが、Python 3では失敗します。 class Foo: x = 5 y = [x for i in range(1)] Python 3.2はエラーを出します: NameError: global name 'x' is not defined 試しFoo.xてもうまくいきません。Python 3でこれを行う方法に関するアイデアはありますか? やや複雑な動機付けの例: from collections import namedtuple class StateDatabase: State = namedtuple('State', ['name', 'capital']) db = [State(*args) for args in [ ['Alabama', 'Montgomery'], ['Alaska', 'Juneau'], # …

7
リスト内包表記と関数関数は、「forループ」よりも高速ですか?
Pythonでパフォーマンスの面では、リスト内包表記である、または機能が好きでmap()、filter()そしてreduce()速くforループよりも?forループがPython仮想マシンの速度で実行されるのに対し、技術的にはCの速度で実行されるのはなぜですか? 開発中のゲームで、forループを使用して複雑で巨大なマップを描画する必要があるとします。この質問は間違いなく関連性があります。たとえば、リスト内包が実際に高速である場合、(コードの視覚的な複雑性にもかかわらず)ラグを回避するためのはるかに優れたオプションです。

14
csvファイルから辞書を作成しますか?
csvファイルから辞書を作成しようとしています。csvファイルの最初の列には一意のキーが含まれ、2番目の列には値が含まれています。csvファイルの各行は、辞書内の一意のキーと値のペアを表します。クラスcsv.DictReaderとcsv.DictWriterクラスを使用しようとしましたが、行ごとに新しい辞書を生成する方法しかわかりませんでした。辞書が一つ欲しい。これが私が使用しようとしているコードです: import csv with open('coors.csv', mode='r') as infile: reader = csv.reader(infile) with open('coors_new.csv', mode='w') as outfile: writer = csv.writer(outfile) for rows in reader: k = rows[0] v = rows[1] mydict = {k:v for k, v in rows} print(mydict) 上記のコードを実行すると、ValueError: too many values to unpack (expected 2)。csvファイルから1つの辞書を作成するにはどうすればよいですか?ありがとう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.