1

len() を使用して長さを尋ねると 19 を返すリスト シードとリーチがあります。
これら 2 つのリストを使用すると、リスト内包表記になります。

sldiff = [(int(seed)-int(leech)) for seed in seeds for leech in leechs]

各要素は、シードとリーチ (文字列であるため、型キャストする必要があります) の差であると想定されていますが、361 が返さ
れます! 私の質問は-なぜそれが起こっているのですか?必要なsldiffリストを取得するにはどうすればよいですか?len(sldiff)

4

3 に答える 3

3

二重リスト内包表記を行っています。つまり、「leechs」の各エントリに対して「seeds」全体を反復処理しています (つまり、19*19、つまり 361)。

あなたが実際にやりたいことは、1 つのリストを反復処理することのようです。各エントリは、シードからの関連するエントリとリーチからのエントリの組み合わせです。それが何をするかzipです:

[(int(seed) - int(leech)) for seed, leech in zip(seeds, leechs)]
于 2013-07-15T15:51:57.113 に答える