7

2 つのリストがあるとします。

a=[1,2,3,4,5]
b=[5,4,3,2,1]

与えられた2つの線形和になる3番目のものを作成したい:

c[i]==a[i]+b[i]
c==[6,6,6,6,6]

「for」コンストラクターで行うことは可能ですか? お気に入り:

c = [aa+bb for aa in a for bb in b]

(これは明らかに私が望むものではありません)

4

5 に答える 5

25

使用zip()

>>> a = [1,2,3,4,5]
>>> b = [5,4,3,2,1]
>>> c = [x+y for x,y in zip(a, b)]
>>> c
[6, 6, 6, 6, 6]

また:

>>> c = [a[i] + b[i] for i in range(len(a))]
>>> c
[6, 6, 6, 6, 6]

c = [aa+bb for aa in a for bb in b]次のようなものです:

 for aa in a:
     for bb in b:
           aa+bb

つまり、から選択1してから、に追加するときにaのすべての要素をループし、次にから選択してから、に追加するときにのすべての値をもう一度ループするため、期待どおりの出力が得られませんでした。b12ab2

于 2012-07-09T20:55:44.733 に答える
6
a=[1,2,3,4,5]
b=[5,4,3,2,1]

[x+y for x,y in zip(a,b)]
[6, 6, 6, 6, 6]

OR

map(lambda x,y:x+y, a, b)
[6, 6, 6, 6, 6]
于 2012-07-09T21:09:05.143 に答える
2
[ay + be for ay, be in zip(a, b)]
于 2012-07-09T20:56:36.837 に答える
1
 sums =   [a[i]+b[i] for i in range(len(a))]
于 2012-07-09T20:56:27.433 に答える
-2

あなたが何をしようとしているのかわかりませんが、numpyであなたが求めたことを簡単に行うことができます。コードにその余分な依存関係を本当に追加したいかどうかはわかりません。

于 2012-07-09T20:55:59.383 に答える