coltonOP
@coltonOP (こるとんくん)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Pythonで配列どうしを足す

解決したいこと

たとえばの話ですが,

list1 = [ 0, 1, 0, 0, 1, 0, 0, 0, 0 ]
list2 = [ 0, 0, 0, 1, 0, 0, 0, 1, 1 ]

list3 = list1 + list2

'''
print(list3)
list3 = [0, 1, 0, 1, 1, 0, 0, 1, 1 ]

このように0,1のリストがあったときに それ同士を足したら 片方が1であれば1にする計算ができる
ものってあるのでしょうか?

宜しくお願いします。

0

4Answer

@cacaoMath
@syutorum001
@odayushin
皆さんご回答 本当にありがとうございます。
プログラミングは数学的な考えやライブラリ、関数の知識の取得が必要だと再認識できました。
今後プログラミングがうまくなるかどうか心配ですが頑張りたいとおもいます。

4Like

こんな感じでしょうか?
(pythonあまり詳しくないのでもっと直接的な書き方があるかもしれませんが。。)

list1 = [ 0, 1, 0, 0, 1, 0, 0, 0, 0 ]
list2 = [ 0, 0, 0, 1, 0, 0, 0, 1, 1 ]
list3 = [item1 or item2 for (item1, item2) in zip(list1, list2)]
# list3 = [0, 1, 0, 1, 1, 0, 0, 1, 1]
3Like

numpyといったライブラリを使うと、質問に近い書き方で回答が得られます。

>>> import numpy as np
>>> np_array1 = np.array([0,1,0,0,1,0,0,0,0])
>>> np_array2 = np.array([0,0,0,1,0,0,0,1,1])
>>> np_array3 = np_array1 + np_array2
>>> print(np_array3)
[0 1 0 1 1 0 0 1 1]

ただし、この場合はndarrayといったnumpyの配列になります。
もし、標準のlistが使いたい場合
以下リンクのようにlistに変換する必要があります。
https://note.nkmk.me/python-numpy-list/

>>> print(np_array3.tolist())
[0, 1, 0, 1, 1, 0, 0, 1, 1]
2Like

片方が1であれば1にする計算

先の回答で全体的なコードは提示されているので考え方の補足をします。

上記の場合は論理和なのでブール演算子のor
ビット演算子の|で実現することができます。

もし「片方が1の場合のみ1にする計算」であれば
排他的論理和になるのでビット演算子の^を使用することで
実現することが出来ます。

両方のリストから要素を順に取り出しながら
上記の方法で双方の比較すれば良いわけです。

2Like

Your answer might help someone💌