[解決済み] Pythonのfor-inループは変数が先行する
2022-03-01 02:25:25
質問
foo = [x for x in bar if x.occupants > 1]
ググってみても、ここで検索しても、これが何をするものなのか分かりませんでした。 多分、正しいものを検索していなかったのでしょうが、ここにあります。 この略語を否定する意見があれば、ぜひお願いします。
どのように解決するのですか?
現在の回答は良いが、それらがどのようにちょうどであるかについて話をしないでください。 構文解析 私たちが慣れ親しんでいるあるパターンに
例えば、10個の数字があり、その中から例えば5より大きい数字の部分集合を求めるとします。
>>> numbers = [12, 34, 1, 4, 4, 67, 37, 9, 0, 81]
上記のタスクに対して、以下のアプローチは互いに全く同じで、最も冗長なものから、簡潔で読みやすいもの、そして パイソン :
アプローチ1
result = []
for index in range(len(numbers)):
if numbers[index] > 5:
result.append(numbers[index])
print result #Prints [12, 34, 67, 37, 9, 81]
アプローチ2(少しスッキリ、フォーインループ)
result = []
for number in numbers:
if number > 5:
result.append(number)
print result #Prints [12, 34, 67, 37, 9, 81]
アプローチ3(エンターリスト理解)
result = [number for number in numbers if number > 5]
とか、もっと一般的な
[function(number) for number in numbers if condition(number)]
のところです。
-
function(x)
はx
を使用して、それを有用なものに変換します (たとえば、次のようなものです。x*x
) -
もし
condition(x)
が False-y 値 (False, None, 空文字列、空リストなど) を返した場合、現在の反復処理はスキップされます (たとえば、次のように考えます)。continue
). もし関数が偽でない値を返したら、現在の値が最終的な結果配列に入ります(そして、上記の変換ステップを通過します)。
この構文を少し違った形で理解するために、以下のボーナスセクションをご覧ください。
さらに詳しい情報は、他のすべての回答者がリンクしているチュートリアルを参照してください。 リスト理解度
ボーナス
(少し韻を踏んでいないが、念のためここに書いておく)
上の例は、次のように書くことができる。
result = filter(lambda x: x > 5, numbers)
上記の一般式は、次のように書くことができる。
result = map(function, filter(condition, numbers)) #result is a list in Py2
関連
-
PythonはWordの読み書きの変更操作を実装している
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み] for'ループでインデックスにアクセスする?
-
[解決済み] JavaScriptのオブジェクトをループスルーまたは列挙するにはどうすればよいですか?
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] インスタンスのクラス名を取得する?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】forループを使った辞書の反復処理
-
[解決済み】Python 3での相対インポート
-
[解決済み】Pythonに三項条件演算子はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
pythonを使ったオフィス自動化コード例
-
Python関数の高度な応用を解説
-
Pythonによるjieba分割ライブラリ
-
python implement mysql add delete check change サンプルコード
-
PythonによるExcelファイルの一括操作の説明
-
[解決済み】RuntimeWarning: invalid value encountered in double_scalars で numpy の除算ができない。
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】Python regex AttributeError: 'NoneType' オブジェクトに 'group' 属性がない。
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)