2012-05-30 304 views
0

我有兩個列表:如何在python中同時執行兩個循環?

host_list = ["10.3.11.250", "10.3.24.45", "10.5.3.5","10.3.4.5"] 
ip_value = ["34.45.34.5", "10.3.11.250","10.3.4.5"] 

我要檢查host_list的數據是否存在於ip_value與否,如果它的ip_value隨後追加到另一個列表。我正在用這種方法檢查下面的代碼:

for host,ip in zip(host_list ,ip_value): 
    if host_list == ip_value 
     list_ip = list_ip.append(ip) 

但它什麼也沒做。爲什麼?那麼list_ip應該返回 它會返回:{「10.3.11.250」,「10.3.4.5」}

+0

但更重要的是,host_list中的某些項目是否是IP對象?普通字符串沒有'.ipv4'或'.ipv6'屬性。 –

+0

OP張貼集(包含在'{}'中)。有人將它編輯到列表中(用'[]'括起來)。 – eumiro

+0

/我慢慢地離開了看起來像編輯戰爭在製作..斯蒂茨或列表,做出決定! :-P @ eumiro:OP從「我有兩個列表:」開始。 –

回答

6

這些是集合,不是列表。你可以計算出它們的區別:

list_ip = host_list - ip_value 

回報

{'10.5.3.5', '10.3.24.45'} 

編輯:好了,現在他們兩個名單。代碼更改爲:

list_ip = list(set(host_list) - set(ip_value)) 

回報

['10.5.3.5', '10.3.24.45'] 
2

使用set小號

another_list = list(set(host_list) - set(ip_value)) 
1

要回答這個問題,爲什麼你給的代碼做什麼:

for host,ip in zip(host_list ,ip_value): 
    if host_list == ip_value 
     list_ip = list_ip.append(ip) 

您正在比較h ost_list到ip_value,而不是將主機與ip進行比較。 host_list!= ip_value,因此下一個語句永遠不會執行。

相關問題