Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将整数逐步添加到列表中_Python_List_For Loop_Concatenation - Fatal编程技术网

Python 将整数逐步添加到列表中

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

这是一个while循环,我需要将log变量(最近的变量)添加到列表中。我不知道怎么做

我将把5和7的倍数(即如果
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,因此一个数字可以从二者中除当且仅当它可以从它们的乘积中除时
  • 找到满足第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]