python中两个列表的比较

时间:2013-04-30 08:49:55

标签: python list

我有一个这样的字符串:

my_string = "apple,orange,kiwi,mange"

我分裂成这个清单:

my_list_string = my_string.split(',')

我有第二个清单:

my_list = ["kiwi", "apple", "mange", "orange"]

在我对这两个列表的比较中,如果my_list中的所有元素都在字符串my_string中,我想返回true,所以我这样做:

my_list_string = my_string.split(',')
my_list = ["kiwi", "apple", "mange", "orange"]
if len(my_list_string) == len (set(my_list) & set(my_list_string)):
    return True
else:
    return False

还有另一种方法(最简单,最优雅,最有效的方式)进行比较吗?

2 个答案:

答案 0 :(得分:5)

这是最有效的方法,因为set具有O(1)摊销查询

>>> my_string = "apple,orange,kiwi,mange"
>>> my_list = ["kiwi", "apple", "mange", "orange"]
>>> set(my_list).issubset(my_string.split(','))
True

答案 1 :(得分:1)

另一个选项是检查两个集合之间是否存在任何差异(使用symmetric_difference):

my_string = "apple,orange,kiwi,mange"
my_list_string = my_string.split(',')
my_list = ["kiwi", "apple", "mange", "orange"]

if set(my_list_string) ^ set(my_list):
    return False
else:
    return True