84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
例如:
list1=[[a,b],[a,c,d],[b,c]] list2=[b,a]
如何判断list2属于list1?忽略元素顺序。 有无效率高的算法?
认证0级讲师
雷雷
所有元素包含list2都轉成set,挨個比較
如果 a, b, c, d 的型態是 hashable 則使用轉成 set 來判斷的:
a
b
c
d
# by hncg def is_contain(x, y): # x in y return any([set(_) == set(x) for _ in y])
或是:
def is_contain(x, y): # x in y return set(x) in (set(_) for _ in y)
若是 unhashable 的, 那可以考慮全部排序後用 in 問:
in
def is_contain(x, y): # x in y return sorted(x) in (sorted(_) for _ in y)
然後使用 generator expression 可能會有效率一點
我回答過的問題: Python-QA
列表屬於有序序列,要無序的就用set(集合)set1={set(x) for x in list1}set2=set(list2)set1
雷雷
所有元素包含list2都轉成set,挨個比較
如果
a
,b
,c
,d
的型態是 hashable 則使用轉成 set 來判斷的:或是:
若是 unhashable 的, 那可以考慮全部排序後用
in
問:然後使用 generator expression 可能會有效率一點
我回答過的問題: Python-QA
列表屬於有序序列,要無序的就用set(集合)
set1={set(x) for x in list1}
set2=set(list2)
set1