web-dev-qa-db-ja.com

2つのリストを繰り返すリスト理解が期待どおりに機能していません

私は2つのリストを繰り返したいです。最初のリストにはいくつかのブラウザのユーザーエージェントが含まれており、2番目のリストにはそれらのブラウザのバージョンが含まれています。バージョンが60を超えるユーザーエージェントのみを除外したいです。

これが私のリストの理解方法をどのように見えるかです。

[link for ver in version for link in useragents if ver > 60]
 _

このリストの問題は、同じユーザーエージェントを複数回印刷することです。私はZip関数を使って次のことを書きました。

for link, ver in Zip(useragents, version):
    if ver > 60:
        # append to list
        print(link)
 _

私のリストの理解が予期しない結果を返すのはなぜですか?

15
Viktor

あなたのデータなしで何が起こっているのかを確かめることはできませんが、一般的には、「ダブル」リストの理解はZipと同じではなく、二重ループ、すなわち.

[a for b in bs for a in as]
 _

に相当します

for b in bs:
    for a in as:
        lst.append(a)
 _
1
Slam