我有下面的代码来选择其他列表中不包含的值。你知道吗
import re
isbn = ["1111","2222","3333","4444","5555"]
sku = ["k1 1111", "k2 2222", "k3 3333", "k4 4444", "k5 5555", "k6 6666", "k7 7777", "k8 8888" ,"k9 1111"]
for x in isbn:
for i in sku:
if x not in i:
print (i)
预期结果如下:
k6 6666
k7 7777
k8 8888
但我得到了所有无与伦比的价值观。我如何才能得到预期的结果,如我上面所示。你知道吗
您需要测试
isbn
中的所有值,然后才能得出这些值都不匹配的结论。你知道吗与其先在} function 使之更简单、更有效:
isbn
上循环,不如在sku
上循环,然后用每个isbn
值测试该值;^{更有效的方法仍然是将ISBN部分分开,并对一组进行测试:
这避免了在
isbn
altogther上循环;设置成员资格测试需要O(1)个常量时间;对于N个sku和M个ISBN值,这将生成O(N)循环(与any()
的O(NM)循环)。你知道吗任何一个版本都可以转换为list comprehension以生成匹配列表;然后首选的集合版本变为:
后者的演示:
您应该在循环中使用^{} 。事实上,您可以使用以下列表理解实现:
这里
any
将返回True
,如果list_1
中的任何字符串作为list2
中的子字符串出现。一旦找到匹配项,它将短路迭代(不检查其他匹配项),并将结果返回为True
。你知道吗如果您对使用
any
不感兴趣,您可以使用下面的for
循环得到相同的结果:它将打印您想要的输出:
如果从集合中删除匹配项,则剩余的集合就是您要查找的:
代码:
测试代码:
结果:
相关问题 更多 >
编程相关推荐