我想了解如何any()与all()Python的内置函数的工作.
我试图比较元组,以便如果任何值不同,那么它将返回True,如果它们都是相同的,它将返回False.他们如何在这种情况下返回[False,False,False]?
d是一个defaultdict(list).
print d['Drd2']
# [[1, 5, 0], [1, 6, 0]]
print list(zip(*d['Drd2']))
# [(1, 1), (5, 6), (0, 0)]
print [any(x) and not all(x) for x in zip(*d['Drd2'])]
# [False, False, False]
Run Code Online (Sandbox Code Playgroud)
据我所知,这应该输出
# [False, True, False]
Run Code Online (Sandbox Code Playgroud)
因为(1,1)是相同的,(5,6)是不同的,并且(0,0)是相同的.
为什么所有元组的评估为False?
我理解这一点没有问题:
a = [1,2,3,4]
b = [x for x in a]
Run Code Online (Sandbox Code Playgroud)
我以为就是这样,但后来我找到了这个片段:
a = [[1,2],[3,4],[5,6]]
b = [x for xs in a for x in xs]
Run Code Online (Sandbox Code Playgroud)
这使得b = [1,2,3,4,5,6].问题是我在理解语法方面遇到了麻烦[x for xs in a for x in xs],有人能解释一下它是如何工作的吗?
我有一个字符串列表 - 类似于
mytext = ['This is some text','this is yet more text','This is text that contains the substring foobar123','yet more text']
Run Code Online (Sandbox Code Playgroud)
我想找到第一次出现以foobar开头的东西.如果我正在贪图,那么我会搜索foobar*.我目前的解决方案是这样的
for i in mytext:
index = i.find("foobar")
if(index!=-1):
print i
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,但我想知道是否有一个'更好'(即更pythonic)的方式这样做?
干杯,迈克