使用python,如何合并或连接两个列表,以便它们的值不重叠?

使用python,如何合并或连接两个列表,以便它们的值不重叠?,第1张

概述首先,我为我不准确的词汇道歉.我是一个绝对的零开始.无论如何,我试图解决这个问题: http://projecteuler.net/problem=1 简而言之,我正在尝试编写一个脚本,它将找到低于1000的3或5的所有倍数的总和. 我的(非常基本的)方法是使用这个程序: ##Multiples of 3x = range(3, 1000, 3)##Multiples of 5y = ra 首先,我为我不准确的词汇道歉.我是一个绝对的零开始.无论如何,我试图解决这个问题:
http://projecteuler.net/problem=1

简而言之,我正在尝试编写一个脚本,它将找到低于1000的3或5的所有倍数的总和.

我的(非常基本的)方法是使用这个程序:

##Multiples of 3x = range(3,1000,3)##Multiples of 5y = range(5,5)a = sum(x)b = sum(y)n = a + bprint n

我意识到这是错误的,因为有15个数字被包含两次(它是5和3的倍数).
那么有没有办法解决这个问题,还是我从一个完全错误的角度来解决这个问题?
或者在尝试解决此问题之前,我是否需要更多地学习?
如果在之前的帖子中已经解释过这个问题,我也很抱歉,但我看了一下.

解决方法 它被称为包含排除原则,所以你可以这样做

##Multiples of 3x = range(3,5)##multiple of 15 are counted twicez=range(15,15)a = sum(x)b = sum(y)c = sum(z)n = a + b -cprint(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

总结

以上是内存溢出为你收集整理的使用python,如何合并连接两个列表,以便它们的值不重叠?全部内容,希望文章能够帮你解决使用python,如何合并或连接两个列表,以便它们的值不重叠?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1194575.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存