2

私はこれらのリストを持っています:

list1 = [3, 5, 2, 1, 9]
list2 = [6, 9, 1, 2, 4]
list3 = []
list4 = []

そして、これらの式を渡したい:

x = a/b
y = 1/b

ここで、a は list1 のすべての値、b は list2 のすべての値であり、計算結果を 2 つの空のリスト (list3 と list4) に追加します。

これは私が持っているものですが、それは災害です笑:(

u = 0
while u<len(list1):
    for a in list1:
        for b in list2:
            x = a/b
            y = 1/b
            u+=1
            list3.append(x,)
            list4.append(y,)

誰でもこれで私を助けることができますか?

4

5 に答える 5

7

ここにワンライナーがあります:

>>> list3,list4 = zip(*[(a/b,1/b) for a,b in zip(list1,list2)])
>>> list3
(0, 0, 2, 0, 2)
>>> list4
(0, 0, 1, 0, 0)

出力はtuples. しかし、それらは簡単に に変換できますlist

おー。generator expressionの代わりに使用することで、メモリ効率をさらに高めることができますlist comprehension

>>> zip(*((a/b,1/b) for a,b in zip(list1,list2)))
于 2012-04-15T21:20:08.767 に答える
5
for a, b in zip(list1, list2):
    x = a/b
    y = 1/b
    list3.append(x)
    list4.append(y)

これは、リストをペアで使用することを意味していると仮定しています。代わりに、可能なすべてのリストの組み合わせが必要な場合は、次のようになります。

for a in list1:
    for b in list2:
        x = a/b
        y = 1/b
        list3.append(x)
        list4.append(y)
于 2012-04-15T21:18:33.480 に答える
4
for a,b in zip(list1,list2):
  x = a/b
  y = 1/b

?? このようなもの

于 2012-04-15T21:18:55.327 に答える
4

Python で zip 関数を使用するだけです。

for a, b in zip(list1, list2):
    list3.append(a/b)
    list4.append(1/b)
于 2012-04-15T21:19:33.353 に答える