如何检查数组中的任何字符串是否存在于另一个字符串中?
喜欢:
a = ['a', 'b', 'c']
str = "a123"
if a in str:
  print "some of the strings found in str"
else:
  print "no strings found in str"
该代码不起作用,只是为了展示我想要实现的目标.
我有一个包含20000个列表的列表.我使用每个列表的第3个元素作为标志.我希望在此列表上执行一些操作,只要至少有一个元素的标志为0,它就像:
my_list = [["a", "b", 0], ["c", "d", 0], ["e", "f", 0], .....]
在开始时,所有标志都是0.我使用while循环来检查至少一个元素的标志是否为0:
def check(list_):
    for item in list_:
        if item[2] == 0:
            return True
    return False
如果check(my_list)返回True,那么我继续处理我的列表:
while check(my_list):
    for item in my_list:
        if condition:
            item[2] = 1
        else:
            do_sth()
实际上,当我迭代它时,我想删除my_list中的一个元素,但是当我迭代它时,我不允许删除项目.
原始的my_list没有标志:
my_list = [["a", "b"], ["c", "d"], ["e", "f"], .....]
因为我迭代它时无法删除元素,所以我发明了这些标志.但是它my_list包含很多项,并且while循环在每个for循环中读取所有项,并且它会消耗大量时间!你有什么建议吗?
我有一个Python列表,我想检查是否有任何元素是否定的.Specman有has()列表的方法:
x: list of uint;
if (x.has(it < 0)) {
    // do something
};
itSpecman关键字在哪里依次映射到列表的每个元素.
我觉得这很优雅.我查看了Python文档,找不到类似的东西.我能想到的最好的是:
if (True in [t < 0 for t in x]):
    # do something
我发现这相当不优雅.有没有更好的方法在Python中执行此操作?
我发现,有一个相关的问题,关于如何查找列表中是否存在至少一个项目:
如何检查下列项目之一是否在列表中?
但是,查找列表中是否存在所有项目的最佳和pythonic方法是什么?
通过文档搜索,我找到了这个解决方案:
>>> l = ['a', 'b', 'c']
>>> set(['a', 'b']) <= set(l)
True
>>> set(['a', 'x']) <= set(l)
False
其他解决方案是:
>>> l = ['a', 'b', 'c']
>>> all(x in l for x in ['a', 'b'])
True
>>> all(x in l for x in ['a', 'x'])
False
但在这里你必须做更多的打字.
还有其他解决方案吗?
让我说我有一个列表
 a=[1,2,3]
我想知道其中至少有一个数字是否存在于另一个列表中,如下所示:
 b=[4,5,6,7,8,1]
换句话说,我想知道列表中是否存在1,2或3 b.我现在可以做点什么了
def func(a, b):
    for i in a:
       if i in b:
          return True
    return False
但有可能有办法把它放在一条线上以使事情变得整洁吗?
我正在尝试比较两个列表,如果第一个列表中的任何值在第二个列表中,则只需打印一条消息.
def listCompare():
  list1 = [1, 2, 3, 4, 5]
  list2 = [5, 6, 7, 8, 9]
  if list1 in list2:
    print("Number was found")
  else:
    print("Number not in list")
在这个例子中,我想要if评估,True因为5在两个列表中.这不起作用,我不确定比较两个列表的最简单方法.
我想使用类似这样的语法:
if a in b
但我想检查多个项目,所以我需要这样的事情:
if ('d' or 'g' or 'u') in a
但我知道它不起作用.
所以我这样做了:
for i in a:
    for j in ['d','g','u']:
        if i==j
它工作,但我想知道是否有一个更简单的方法.
我认为这是一个简单的问题,所以我将直接举一个例子.
鉴于这两个列表:
x = ['a', 'ab', 'abc', 'bc', 'c', 'ac']
y = ['a', 'b']
如何编写列表推导来过滤列表x,结果如下:
result = ['c']
我想要一个列表推导,它将y中字符串的任何部分匹配排除在x中的字符串之外.例如,y中的'a'将匹配x中的'a','ab','abc'和'ac'.
这种理解只匹配整个字符串: result = [r for r in x if r not in y]
如果已经问过这个问题,我很乐意接受前一个答案的链接.也就是说,我还没有在SO上找到一个.
问题是关于更快,即.更pythonic,测试迭代中的任何元素是否存在于另一个iterable中的方法.
我想要做的是:
if "foo" in terms or "bar" in terms or "baz" in terms:
    pass
但显然这种方式重复了'in terms'子句并使代码膨胀,特别是当我们处理更多元素时.所以我想知道在python中是否有更好的方法.
我有一个元组和一个列表:
t = (1, 2, 9)
l = range(2, 8)
我想检查列表中是否至少有一个元素在元组中。我尝试使用:
if (2 or 3 or 4 or 5 or 6 or 7) in l:
    return True
但它仅适用于数字2。
现在我正在使用:
if 2 in l or 3 in l or 4 in l or 5 in l or 6 in l or 7 in l:
    return True
但我认为这不是最好的方法。有没有办法缩小这段代码以使其更优雅?
我很难理解"for"功能是如何工作的.
我想创建一个脚本,只输出list2中不在list1内的字符串.例如:
list1 = ["link1.com", "link2.com", "link3.com"]
list2 = ["link2.com", "link123.com"]
for list2 in list1:
    print(list2)
{我的意图是打印的代码:
link123.com
但它改为从list1打印字符串}
我无法让它发挥作用.非常感谢帮助.我顺便使用python 3.
python ×11
list ×6
string ×2
arrays ×1
exists ×1
for-loop ×1
inclusion ×1
python-3.x ×1
substring ×1
while-loop ×1