如何使用';对于循环';函数并查找可被7整除的数字,python?
我有一个数字列表,我试图找到所有可以被2整除的数字。所以我找到了2个正确的数字,但是在我的输出中我得到了。有谁能帮我摆脱这个零,因为它不在名单上 这是我的密码:如何使用';对于循环';函数并查找可被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
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
可能会在更复杂的示例中产生更可读的代码。一天结束时,对于循环,列表理解和映射
/过滤器
通常完成相同的任务。完全同意。理解是它们之间的灰色地带。谢谢,它起作用了!你能解释一下我的代码中有什么错误,以及我下次如何改进它吗?