首页 > 列表中元素顺序的问题?

列表中元素顺序的问题?

例如:

 list1=[[a,b],[a,c,d],[b,c]]
 
 list2=[b,a]
 

如何判断list2属于list1?忽略元素顺序。
有无效率高的算法?


所有元素包括list2都转成set,挨个比较


列表属于有序序列,要无序的就用set(集合)
set1={set(x) for x in list1}
set2=set(list2)
set1<set2 或者用set1.issubset(set2)


如果 a, b, c, d 的型態是 hashable 則使用轉成 set 來判斷的:

# 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 問:

def is_contain(x, y):  # x in y
    return sorted(x) in (sorted(_) for _ in y)

然後使用 generator expression 可能會有效率一點


我回答過的問題: Python-QA


def is_contain(a, b):  # a in b
    return any([set(_) == set(a) for _ in b])
  # return set(a) in [set(_) for _ in b]
【热门文章】
【热门文章】