[英]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.