【发布时间】:2025-12-13 01:05:04
【问题描述】:
我试图在一个列表中找到两个可以被彼此整除的数字。我已经设法做到这一点,方法是放置两个循环遍历同一个列表来比较数字,直到找到一对。
我的问题:
是否可以使用条件语句轻松将此代码压缩为一两行?
def FindDivisible(j):
for i in j:
for m in j:
if int(i) % int(m) == 0 and int(i) != int(m):
return([int(i),int(m)])
我明白这根本不是很 Pythonic。但是,我确实想知道这是否可能以及解决此问题的好方法。
【问题讨论】:
-
我想你想要列表理解。有了理解,你可以在一两行中做到这一点
-
您的代码没有正确缩进。除此之外,您当前的解决方案仅返回找到的第一对数字。例如,如果输入是
j = [2, 4, 5, 6, 7, 8],您的代码将返回[4, 2]。这是你想要的吗?其他对呢? -
列表理解不能解决这个问题... 对 OP:你为什么要把它压缩成“一两行”?更少的代码并不是更好的代码。可读的代码是更好的代码,除非变量名不好,这段代码是可读的。
-
看来作业没有好好计划。再努力一点。
-
@andyhasit,我认为你低估了列表理解
标签: python python-3.x for-loop