我有兩個串列,我需要以下面的方式比較這兩個串列
import sys
name_1=['mahesh','karthik','nani','Karun']
name_2 = ['mahesh','karthik','','Karun','mari']
list_match = []
counter = 0
for i in name_2:
try:
if i in name_1:
pass
else:
list_match.append(i)
counter = counter 1
print(f"'{list_match[0]}' is missing")
except Exception as e:
print(e)
if counter > 0:
sys.exit()
輸出獲取:
unnamed :3 is missing
預期輸出:
Nani is extra column
uj5u.com熱心網友回復:
第一件事,你錯過了一個 equal 并且在第二個串列的兩個元素之間有一個空白空間。其次,根據您的腳本,您永遠不會得到預期的輸出。那是因為“Nani”僅在第一個串列中而不在第二個串列中,但是,由于您正在迭代第二個串列,因此您永遠不會知道 Nani 僅在 name_1 中。如果任務是檢測第二個串列中缺失的元素,但出現在第一個串列中,則需要遍歷 name_1,如下所示(我使用了與您相同的樣式):
name_1 = ['mahesh','karthik','nani','Karun', 'mari']
name_2 = ['mahesh','karthik','Karun']
list_match = []
non_match = []
for i in name_1:
try:
if i not in name_2:
non_match.append(i)
print(f"'{i}' is missing")
break
else:
list_match.append(i)
except Exception as e:
print(e)
當它第一次檢測到一個缺失的元素時,程式就結束了。要在每次評估缺失元素后終止程式,請注釋中斷指令。我不太明白變數 non_match 和 list_match 的存在,因為你沒有使用它們。我還在第一個“if 陳述句”中用“break”替換了最后一個“if 陳述句”。
獲取缺失元素的一種更簡單的方法是將兩個串列視為集合并獲取它們之間的差異,如下所示:
name_1 = ['mahesh','karthik','nani','Karun', 'mari']
name_2 = ['mahesh','karthik','Karun']
name_1 = set(name_1)
name_2 = set(name_2)
print("missing elements in the second list:\n", list(name_1 - name_2))
如果您反轉減法的順序,您將獲得第一個串列的缺失元素。
如果任務是獲取兩個串列中都缺少的元素,您可以嘗試以下操作:
name_1 = ['mahesh','karthik','nani','Karun', 'mari']
name_2 = ['mahesh','karthik','Karun', 'Aldo']
name_1 = set(name_1)
name_2 = set(name_2)
print("mismatched elements:\n", list(name_1.symmetric_difference(name_2)))
編輯 基于新的請求,這里的代碼:
name_1 = ['mahesh','karthik','nani','Karun']
name_2 = ['mahesh','karthik','','Karun','mari']
list_match = []
i = 0
while i < len(name_2):
if not name_2[i]:
print("empty element founded in position ", i)
elif name_2[i] not in name_1:
print(f"'{name_2[i]}' is extra column in position ", i)
#break
else:
list_match.append(i)
i =1
輸出:
empty element founded in position 2
'mari' is extra column in position 4
在第一次不匹配后從 break 中洗掉注釋以結束程式。
如果您想要這種輸出,請編輯 x2 RIEDITED:
nani is missing in position 2
'mari' is extra column in position 4
'nani' is extra column in position 2
如果你需要使用串列,你可以試試這個(但我強烈建議使用集合)
name_1=['mahesh','karthik','nani','Karun']
name_2 = ['mahesh','karthik','','Karun','mari']
list_match = []
i = 0
while i < len(name_2):
if not name_2[i]:
print(name_1[i]," is missing in position ", i)
elif name_2[i] not in name_1:
print(f"'{name_2[i]}' is extra column in position ", i)
#break
else:
list_match.append(name_2[i])
i =1
for el in name_1:
if el not in list_match:
print(f"'{el}' is extra column in position ", name_1.index(el))
編輯 x3
試試這個
name_1 = ['mahesh','karthik','nani','Karun']
name_2 = ['mahesh','karthik','','Karun','mari']
i = 0
list_match = []
while i<len(name_2):
if not name_2[i]:
print(name_1[i], " is missing in position ", i)
elif name_2[i] in name_1:
list_match.append(name_2[i])
i =1
for el in name_1:
if el not in list_match:
print(el, " is extra column")
如果您需要的輸出是這個:
nani is missing in position 2
nani is extra column
希望這是有幫助的。
uj5u.com熱心網友回復:
如果您正在尋找兩個串列之間的對稱差異,那么理想情況下您會將它們作為集合進行維護,但是,假設您有充分的理由未在此處參考以使用串列,那么您可以這樣做:
import sys
name_1=['mahesh','karthik','nani','Karun']
name_2=['mahesh','karthik', 'Karun']
missing = set(name_1) ^ set(name_2)
print('\n'.join(f'{name} is missing' for name in missing))
if len(missing):
sys.exit()
uj5u.com熱心網友回復:
我會遍歷您要檢查的串列,如下所示:
name_1=['mahesh','karthik','nani','Karun']
name_2 ['mahesh','karthik','Karun']
for item in name_1:
if item not in name_2:
print(f"{item} is missing.")
如果您想將缺少的專案添加到新串列中:
missing_items_list = []
for item in name_1:
if item not in name_2:
missing_items_list.append(item)
print(f"Missing items from list_2: {missing_items_list}")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/384575.html
標籤:Python 蟒蛇-3.x 列表 python-2.7 列表显示
下一篇:限制惰性列中的專案
