是否可以在列表项包含匹配字符串的两个列表中搜索匹配,不相等?
例如:
list_a = [
'ip prefix-list PL_ABBA seq 5 permit 10.10.10.0/24',
'ip prefix-list PL_ABBA seq 10 permit 10.20.10.0/24',
]
list_b = [
'10.10.10.0/24',
'10.20.10.0/24',
'10.30.10.0/24',
'10.40.10.0/24',
]
Run Code Online (Sandbox Code Playgroud)
10.30.10.0/24并且10.40.10.0/24在list_a中缺少所以我想将这两个丢失?
我可以从list_a中取出子网来生成new_list_a然后使用set进行比较?但是想知道是否有更简单的方法?
谢谢
您可以使用
>>> IPs = {s.rsplit(' ')[-1] for s in list_a}
>>> IPs
>>> {'10.10.10.0/24', '10.20.10.0/24'}
>>> [ip for ip in list_b if ip not in IPs]
>>> ['10.30.10.0/24', '10.40.10.0/24']
Run Code Online (Sandbox Code Playgroud)
IPs是一个set(用于O(1)成员资格测试)的ip地址,其中s.rsplit(' ')[-1]用于获取元素的IP部分list_a.