2

コマンドを入力するとデータが与えられ、それをリストに変換します。リストに変換したら、そのリスト [A] からすべてのデータをコピーして保存するにはどうすればよいでしょうか。つまり、コマンドを入力してデータの 2 番目のリスト [B] が与えられたときに、2 つを比較できます。2つのリストから同じデータを相殺する-したがって、[A]と[B]の間で類似していないものが出力されます。例えば...

List [A]
1
2
3

List [B]
1
2
3
4

Python を使用して、2 つのリストを比較し、相違点を出力したいと考えています。

Output = 4

うまくいけば、これは理にかなっています!

4

5 に答える 5

3

セット演算を使用できます。

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

print set(b) - set(a)

データをリスト形式で出力するには、次の print ステートメントを使用できます

print list(set(b) - set(a))
于 2013-07-03T14:29:26.453 に答える
1
>>> b=[1,2,3,4]
>>> a=[1,2,3]
>>> [x for x in b if x not in a]
[4]
于 2013-07-03T14:43:08.420 に答える
0
for element in b:
    if element in a:
        a.remove(element)

この回答は、セットではなくリストを返すため、重複を考慮する必要があります。そのように [1,2,1] - [1,2] は [] ではなく [1] を返します。

于 2013-07-03T14:37:06.423 に答える
0

試すitertools.izip_longest

import itertools

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

[y for x, y in itertools.izip_longest(a, b) if x != y]
# [4]

これをさらに簡単に変更して、それぞれの違いに対して duple を返すことができます。duple の最初の項目は位置でb、2 番目の項目は値です。

[(i, pair[1]) for i, pair in enumerate(itertools.izip_longest(a, b)) if pair[0] != pair[1]]
# [(3, 4)]
于 2013-07-03T14:37:54.583 に答える
0

データを入力するには、ループを使用します。

def enterList():
  result = []
  while True:
    value = raw_input()
    if value:
      result.append(value)
    else:
      return result

A = enterList()
B = enterList()

zip比較するには、ペアを作成してそれぞれを比較するために使用できます。

for a, b in zip(A, B):
  if a != b:
    print a, "!=", b

これにより、短いリストの長さで比較が切り捨てられます。それを処理するために使用して、ここで与えられた別の回答でソリューションを使用itertools.izip_longest()してください。

于 2013-07-03T14:44:32.360 に答える