我有一个普遍的疑问,因为我的逻辑看似正确,但仍然给我错误的结果。我需要了解,为什么这种逻辑无法顺利进行。
问题很简单,请不要以此为基础来判断我,而且我是python的新手。这就是问题
要从提供的列表中删除奇数
我的代码:
def purify(lst):
for ele in lst:
if ele % 2 != 0:
lst.remove(ele)
return lst
print purify([4, 5, 3, 4])
输出:[4,3,4]
为什么????
我了解remove()
,我已经读过它,对于这个结果,[1,2,3]
,它可以打印正确的结果,但是对于某些输入,它就像是疯了一样。
给出的一般答案是make a new list and append it to the new list based upon the check whether the elem%2 == 0 and return it
但是我的问题是,为什么我的代码不起作用?这里的逻辑出了什么问题?在此先感谢:)
答案 0 :(得分:1)
问题是当您发现5号奇数时您正在循环,然后将其删除但循环尚未完成。然后从该循环中删除,因此,下次对其进行迭代时,将跳过数字3。
如果只打印它:
def purify(lst):
for ele in lst:
print(ele)
if ele % 2 != 0:
lst.remove(ele)
return lst
print purify([4, 5, 3, 4])
值是:
4
5
4
[4, 3, 4]
那么,迭代中的3号在哪里?
答案 1 :(得分:1)
这是通过numpy数组进行处理的矢量化方法,
SELECT
*
FROM
mytable
WHERE substring(col, 4, 1) ~ '[0-9]'