Python 将整数逐步添加到列表中
这是一个while循环,我需要将log变量(最近的变量)添加到列表中。我不知道怎么做 我将把5和7的倍数(即如果Python 将整数逐步添加到列表中,python,list,for-loop,concatenation,Python,List,For Loop,Concatenation,这是一个while循环,我需要将log变量(最近的变量)添加到列表中。我不知道怎么做 我将把5和7的倍数(即如果x%7==0和x%5==0)的每个数字添加到一个列表中,我将在最后陈述 但是怎么做呢 -- “这个程序是关于查找1500到2700之间的每一个数字 (含)可被5和7整除的 基本上,我只想将x变量添加到列表中,该变量可以被7和5整除(每次循环运行时)。例如1505、1540等创建列表变量: foo_list=[] 之后,您只需在循环结束时将值附加到列表中 foo\u list.appen
x%7==0
和x%5==0
)的每个数字添加到一个列表中,我将在最后陈述
但是怎么做呢
--
“这个程序是关于查找1500到2700之间的每一个数字
(含)可被5和7整除的
基本上,我只想将
x
变量添加到列表中,该变量可以被7和5整除(每次循环运行时)。例如1505、1540等创建列表变量:
foo_list=[]
之后,您只需在循环结束时将值附加到列表中
foo\u list.append()
因此,在您的代码上看起来像这样:
my_list = []
x=1500
for x in range(1500,2701):
if x % 7==0 and x % 5==0:
print("\n", x,"IS DIVISIBLE\n")
my_list.append(x)
else:
print(x,"is not a common factor")
如您所见,x+=1
已被删除,循环正在为您执行此操作
正如一些人指出的那样,如果你只是对获取列表感兴趣,而不是打印数字是否是一个共同因素,那么你可以使用列表理解,如下所示:
my_list= [x for x in range(1500, 2701) if x%5==0 and x%7==0]
当满足条件时,您不需要增加
x
,因为范围
生成器会为您处理
你很接近:
somelist=[]
对于范围内的x(15002701):
如果x%5==0和x%7==0:
somelist.append(x)
#您不需要else块,因为循环将继续
您也可以在列表中执行此操作,以提高速度:
somelist=[x代表范围内的x(15002701),如果x%5==0和x%7==0]
如果你在寻找效率,先计算一下:
5
和7
是它们自身的素数1,因此一个数字可以从二者中除当且仅当它可以从它们的乘积中除时35
,直到到达范围的终点。请注意,您知道有多少这样的数字将在您的范围内李>
现在代码是:
first = next(x for x in range(1500, 2701, 5) if x % 35 == 0)
res = [first + 35*i for i in range((2701-1-1500)//35 + 1)]
产生:
[1505, 1540, 1575, 1610, 1645, 1680, 1715, 1750, 1785, 1820, 1855, 1890, 1925, 1960, 1995, 2030,
2065, 2100, 2135, 2170, 2205, 2240, 2275, 2310, 2345, 2380, 2415, 2450, 2485, 2520, 2555, 2590,
2625, 2660, 2695]
这将比任何基于if的方法都要快
至于您的代码的问题,其他答案和评论已经对其进行了彻底的讨论,因此我将不深入讨论
1一般来说,但这与此无关
值=[x代表范围内的x(15002701),如果不是x%7,也不是x%5]
x=x+1
是不需要的(尽管在这种情况下不是有害的)x%7==0和x%5==0
相当于x%35==0
。您也可以删除x=x+1
。我对这里使用next
感到困惑,因为我自己从来没有使用过它。除了它是一个单行程序之外,它与此代码有什么不同<范围(1500、2701、5)内x的代码>:如果x%35==0:
第一次=x
中断
则不是;这只是一种更简洁的书写方式。哦,我明白了next()
只是生成器的第一个元素。聪明。
my_list = []
for x in range(1500,2701):
if x % 7==0 and x % 5==0:
print("\n", x,"IS DIVISIBLE\n")
my_list.append(x)
#I THINK THE LIST STUFF GOES HERE
else:
print(x,"is not a common factor")
print(my_list)
first = next(x for x in range(1500, 2701, 5) if x % 35 == 0)
res = [first + 35*i for i in range((2701-1-1500)//35 + 1)]
[1505, 1540, 1575, 1610, 1645, 1680, 1715, 1750, 1785, 1820, 1855, 1890, 1925, 1960, 1995, 2030,
2065, 2100, 2135, 2170, 2205, 2240, 2275, 2310, 2345, 2380, 2415, 2450, 2485, 2520, 2555, 2590,
2625, 2660, 2695]