簡體   English   中英

如何在Python中復制數據

[英]How to copy data in Python

輸入命令后,將獲得數據,然后將其轉換為列表。 一旦轉換為列表,我該如何復制該列表[A]中的所有數據,並保存它-因此,當我輸入命令並獲得第二個數據列表[B]時,我可以將兩者進行比較; 並取消了兩個列表中相同的數據-因此輸出了[A]和[B]之間不相似的數據。 例如...

List [A]
1
2
3

List [B]
1
2
3
4

現在,使用Python,我想將兩個列表相互比較,然后輸出差異。

Output = 4

希望這是有道理的!

您可以使用設置操作。

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

print set(b) - set(a)

要以列表格式輸出數據,可以使用以下打印語句

print list(set(b) - set(a))
>>> b=[1,2,3,4]
>>> a=[1,2,3]
>>> [x for x in b if x not in a]
[4]
for element in b:
    if element in a:
        a.remove(element)

該答案將返回一個列表,而不是一個列表,並且應考慮重復項。 這樣[1,2,1]-[1,2]返回[1]而不是[]。

試試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]

您可以輕松地對此進行進一步修改,以針對每個差異返回一個二元組,其中二元組中的第一項是b的位置,第二項是值。

[(i, pair[1]) for i, pair in enumerate(itertools.izip_longest(a, b)) if pair[0] != pair[1]]
# [(3, 4)]

要輸入數據,請使用循環:

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()處理該問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM