如何使用';对于循环';函数并查找可被7整除的数字,python?

如何使用';对于循环';函数并查找可被7整除的数字,python?,python,Python,我有一个数字列表,我试图找到所有可以被2整除的数字。所以我找到了2个正确的数字,但是在我的输出中我得到了。有谁能帮我摆脱这个零,因为它不在名单上 这是我的密码: k = [1, 610, 5, 3, 4884, 455, 555, 555, 555 987, 1597, 2584, 4181, 6765, 10946, 17711] divisible_by_2 = 0 for i in l: if i % 2 == 0: divisible_by_7 = divisi

我有一个数字列表,我试图找到所有可以被2整除的数字。所以我找到了2个正确的数字,但是在我的输出中我得到了。有谁能帮我摆脱这个零,因为它不在名单上

这是我的密码:

k = [1, 610, 5, 3, 4884, 455, 555, 555, 555 987, 1597, 2584, 4181, 6765, 10946, 17711]

divisible_by_2 = 0
for i in l:
    if i % 2 == 0:
        divisible_by_7 = divisible_by_7, i
    print("divisible_by_7:", i)

divisible_by_2

可以使用列表而不是元组:

divisible_by_7 = []

for i in l:
    if (i % 7 == 0):
        divisible_by_7.append(i)

你应该试着把所有7个可除数加到一个列表中。 这部分代码是错误的,因为它将用0替换0

可被_除以_7=0
可除_被_7整除=可除_被_7整除,i
你可以这样做

l=[1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711]
可被_除以_7=[]
对于l中的i:
如果(i%7==0):
可被_7整除的_。附加(i)
打印(可被_除以_7)

虽然不对
循环使用
,但解决此类问题的另一种方法是使用内置函数。您给它一个iterable(如列表
l
)和一个函数,该函数为结果中所需的元素返回
True

l=[1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711]
可被_7整除的_=列表(筛选器(lambda i:i%7==0,l))

您的代码正在创建嵌套元组。在python中,表达式
x,y
创建一个元组
(x,y)
,而不考虑括号。如果要附加到元组,附加的东西也必须是元组,如下所示:

divisible_by_7 += (i,)
始终可以从空元组开始:

divisible_by_7 = ()
然而,元组对于附加新项不是很好。它们是不可变的,因此整个元组被重新分配,并且每次都会创建一个新对象,而无需摊销。另一方面,列表可以就地修改。底层缓冲区仍然需要更改,但扩展对用户来说是透明的,并且当您一个接一个地添加多个缓冲区时,会进行摊销

divisible_by_7 = []
for i in ...:
    if ...:
        divisible_by_7.append(i)
这种形式的表达式(在
for
循环中的单个附加,如果
有或没有
if
)非常适合python中的列表理解。理解应采用以下格式:

divisible_by_7 = [i for i in ... if ...]
在您的具体情况下:

divisible_by_7 = [i for i in l if not i % 7]

在这种情况下,条件
不是i%7
相当于
i%7==0

,这是一个列表,而不是一个数组。@MadPhysicator是的,谢谢你似乎有点过分了,但它确实有效,尽管对于那些更习惯于for循环的人来说,它可能不熟悉,学习使用
过滤器的函数编程方法,在我看来,
map
reduce
可能会在更复杂的示例中产生更可读的代码。一天结束时,对于循环,列表理解和
映射
/
过滤器
通常完成相同的任务。完全同意。理解是它们之间的灰色地带。谢谢,它起作用了!你能解释一下我的代码中有什么错误,以及我下次如何改进它吗?