python - 列表中元素顺序的问题?
PHP中文网
PHP中文网 2017-04-18 09:23:42
[Python讨论组]

例如:

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

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

PHP中文网
PHP中文网

认证0级讲师

全部回复(4)
大家讲道理
def is_contain(a, b):  # a in b
    return any([set(_) == set(a) for _ in b])
  # return set(a) in [set(_) for _ in b]
巴扎黑

所有元素包括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

ringa_lee

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号