Hackerrank问题:列表理解中的几个for循环

2024-05-03 20:39:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在解决hackerrank的一个问题,看看: https://www.hackerrank.com/challenges/between-two-sets/problem

我想有一行代码

所以我尝试创建一个列表,用range (a[-1],b[0])遍历第一个数组的最后一个整数和第二个数组的第一个整数之间的所有整数

我想用if i%j==0 and x%i==0和j和x应用2个数组a和b中的整数for j in a for x in bset()检索重复项

def getTotalX(a, b):
    inbetween = set([i for i in range (a[-1],b[0]) for j in a for x in b if i%j==0 and x%i==0])
    return (inbetween)

输出[4, 4, 4, 4, 4, 4, 6, 8, 8, 8, 8, 8, 8, 12, 12]

代码的作用是这样的:在每个i上,它将它与循环的第一个j进行比较,如果与条件对应,则在数组中添加{},然后将相同的ifor j in a循环的下一次迭代进行比较,如果它对应,则在数组中再次添加相同的i

如何编写代码来比较i与数组a中的所有{}?我能把它写在同一行吗?在


Tags: and代码inhttpscomforifwww
2条回答

谢谢你的帮助,对帖子中的混乱表示抱歉。在

输入:

[2,4]
[16,32,96]

输出: 3

说明: 输出是满足以下条件的两个数组之间的整数数:

1-第一个数组的元素是所考虑整数的所有因子

2-所考虑的整数是第二个数组的所有元素的因子

这里的输出是3,因为有3个整数满足这些条件: 4、8和16

例如,4

1-4%2=04%4 =0

2-16%4=0和{}和{}

所以谢谢你的帮助,我提交了这个,它的工作!在

^{pr2}$

谢谢你的帮助!我想我必须用比I,j,x更好的名字来命名更大的代码

正如@Prune所说,any和{}可以使代码更短,而且在我看来可读性更强(比{}和其他东西的替代方案)。在

def getTotalX(a, b):
    return {i for i in range(a[-1], b[0])
               if all(i % j == 0 for j in a)
              and all(x % i == 0 for x in b)}

getTotalX([2, 6], [24, 36]) # {6, 12}

相关问题 更多 >