我想了解如何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?
是否有Pythonic和有效的方法来检查Numpy数组是否包含给定行的至少一个实例?"有效"是指它在找到第一个匹配行时终止,而不是遍历整个数组,即使已经找到了结果.
使用Python数组,这可以非常干净地完成if row in array:,但是这不像我对Numpy数组所期望的那样工作,如下所示.
使用Python数组:
>>> a = [[1,2],[10,20],[100,200]]
>>> [1,2] in a
True
>>> [1,20] in a
False
Run Code Online (Sandbox Code Playgroud)
但是Numpy数组给出了不同的,而且看起来很奇怪的结果.(__contains__方法ndarray似乎没有记录.)
>>> a = np.array([[1,2],[10,20],[100,200]])
>>> np.array([1,2]) in a
True
>>> np.array([1,20]) in a
True
>>> np.array([1,42]) in a
True
>>> np.array([42,1]) in a
False
Run Code Online (Sandbox Code Playgroud) 我有一个字符串列表,我想搜索一个单词组合.如果组合不存在,则删除列表.是否有一个python列表理解可行?
word_list = ["Dogs love ice cream", "Cats love balls", "Ice cream", "ice cream is good with pizza", "cats hate ice cream"]
keep_words = ["Dogs", "Cats"]
Delete_word = ["ice cream"]
Run Code Online (Sandbox Code Playgroud)
删除里面有冰淇淋的单词,但如果句子中有狗或猫,请保留它.
Desired_output = ["Dogs love ice cream", "Cats love balls", "cats hate ice cream"]
Run Code Online (Sandbox Code Playgroud)
尝试此代码也试过AND和OR,但无法正确组合.
output_list = [x for x in word_list if "ice cream" not in x]
Run Code Online (Sandbox Code Playgroud) 我见过以下情况:
>>> def func(a):
... if a:
... print("True")
...
>>> a = [1, 2, 3]
>>> func(a)
True
>>> a == True
False
Run Code Online (Sandbox Code Playgroud)
为什么会出现这种差异?
我不明白为什么任何()没有按照我期望的方式工作.下面,我想说,如果城市列表中的任何城市都在短语.split()中,则返回True.但是为什么当phrase.split()['replacement', 'windows', 'in', 'seattle', 'wa']和'seattle'显然在短语.split()列表中时它返回false ?
>>> cities = ['seattle', 'san antonio', 'denver']
>>> phrase = 'replacement windows in seattle wa'
>>> any(cities) in phrase.split()
False
>>> 'seattle' in phrase.split()
True
Run Code Online (Sandbox Code Playgroud) 我有一个脚本来检查列表中是否有一个或多个相同的项目。这是代码:
items = ["Blue", "Black", "Red"]
def isUnique(item):
seen = list()
return not any(i in seen or seen.append(i) for i in item)
print(isUnique(items))
Run Code Online (Sandbox Code Playgroud)
如果给定列表中的所有项目都是唯一的,则打印“True”;如果列表中的一个或多个项目是唯一的,则打印“False”。有人可以any()为我解释一下脚本的部分吗,因为我不完全理解它是如何工作的?
这个问题特别涉及编码约定。我知道在这种情况下使用 if 或 elif 会产生相同的结果。只是想知道哪种是构造此函数的“正确”方法:
连续如果:
def can_take(self, selectedCourse):
if selectedCourse.hasPassed():
return False
if selectedCourse.getPrereqs() != 'none':
for prereq in selectedCourse.getPrereqs():
if not self.courses[prereq].hasPassed():
return False
return True
Run Code Online (Sandbox Code Playgroud)
与埃利夫:
def can_take(self, selectedCourse):
if selectedCourse.hasPassed():
return False
elif selectedCourse.getPrereqs() != 'none':
for prereq in selectedCourse.getPrereqs():
if not self.courses[prereq].hasPassed():
return False
return True
Run Code Online (Sandbox Code Playgroud) python ×8
python-3.x ×3
any ×2
for-loop ×2
arrays ×1
function ×1
if-statement ×1
list ×1
numpy ×1
object ×1
string ×1
truthiness ×1