假设我有一个int
s列表:
listOfNumbers = range(100)
我想返回一个符合某种条件的元素列表,比如说:
def meetsCondition(element):
return bool(element != 0 and element % 7 == 0)
在list
list
为meetsCondition(element)
的{{1}}中返回子True
元素的Pythonic方式是什么?
一种天真的方法:
def subList(inputList):
outputList = []
for element in inputList:
if meetsCondition(element):
outputList.append(element)
return outputList
divisibleBySeven = subList(listOfNumbers)
是否有一种简单的方法可以执行此操作,可能使用列表推导或set()
函数,而不使用临时outputList?
答案 0 :(得分:28)
使用列表理解,
divisibleBySeven = [num for num in inputList if num != 0 and num % 7 == 0]
或者您也可以使用meetsCondition
,
divisibleBySeven = [num for num in inputList if meetsCondition(num)]
你实际上可以用Python的truthy语义编写相同的条件,比如
divisibleBySeven = [num for num in inputList if num and num % 7]
或者,您可以对filter
使用meetsCondition
功能,就像这样
divisibleBySeven = filter(meetsCondition, inputList)