python - 列表中元素顺序的问题?
PHP中文网
PHP中文网 2017-04-18 09:23:42
0
4
619

例如:

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

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

PHP中文网
PHP中文网

认证0级讲师

全部回覆(4)
大家讲道理

雷雷

巴扎黑

所有元素包含list2都轉成set,挨個比較

刘奇

如果 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

左手右手慢动作

列表屬於有序序列,要無序的就用set(集合)
set1={set(x) for x in list1}
set2=set(list2)
set1

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!