使用python,如何合并或连接两个列表,以便它们的值不重叠?
发布时间:2020-12-20 12:19:16 所属栏目:Python 来源:网络整理
导读:首先,我为我不准确的词汇道歉.我是一个绝对的零开始.无论如何,我试图解决这个问题: http://projecteuler.net/problem=1 简而言之,我正在尝试编写一个脚本,它将找到低于1000的3或5的所有倍数的总和. 我的(非常基本的)方法是使用这个程序: ##Multiples of 3x
首先,我为我不准确的词汇道歉.我是一个绝对的零开始.无论如何,我试图解决这个问题:
http://projecteuler.net/problem=1 简而言之,我正在尝试编写一个脚本,它将找到低于1000的3或5的所有倍数的总和. 我的(非常基本的)方法是使用这个程序: ##Multiples of 3 x = range(3,1000,3) ##Multiples of 5 y = range(5,5) a = sum(x) b = sum(y) n = a + b print n 我意识到这是错误的,因为有15个数字被包含两次(它是5和3的倍数). 解决方法
它被称为包含排除原则,所以你可以这样做
##Multiples of 3 x = range(3,5) ##multiple of 15 are counted twice z=range(15,15) a = sum(x) b = sum(y) c = sum(z) n = a + b -c print(n) 但美在于使用发电机或列表理解 a = sum(i for i in range(1000) if i%3 == 0 or i%5 == 0 ) print(a) 其中%是modulo并且是整数偏差的余数. 在这种情况下,两种算法运行时间取决于n是1000.如果n将是例如1000000000,则必须等待很长时间才能完成.如果你应用小数学,你可以找到它 sum(a for a in range(a1,a2,n)) 实际上是arithmetic progression,无论n多大,都可以在恒定时间内计算出总数. http://en.wikipedia.org/wiki/Project_Euler#Example_problem_and_solutions (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |