1

我有一个这样的字符串:

my_string = "apple,orange,kiwi,mange"

我分裂成这个列表:

my_list_string = my_string.split(',')

我还有第二个清单:

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

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

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

是否有其他方法(最简单、最优雅和最有效的方法)来进行这种比较?

4

2 回答 2

5

这是最有效的方法,因为sets 有 O(1) 分期查找

>>> my_string = "apple,orange,kiwi,mange"
>>> my_list = ["kiwi", "apple", "mange", "orange"]
>>> set(my_list).issubset(my_string.split(','))
True
于 2013-04-30T08:51:45.637 回答
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
于 2013-04-30T09:01:52.777 回答