Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.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 - Fatal编程技术网

Python 带“的迭代列表”;“范围内”;功能?

Python 带“的迭代列表”;“范围内”;功能?,python,list,for-loop,Python,List,For Loop,我对这个网站和python还是相当陌生的。所以,请原谅我的问题可能不够具体,可能已经有一个答案,我还没有找到 基本上,我在python中遇到了for循环的问题 我想使用in range()函数创建列表。每个连续列表应设置下一个数字。比如说 [1,2,3,4,5] [2,3,4,5,6] [3,4,5,6,7] 我还希望生成的列表长度相等:例如,5个数字、6个数字或7个数字,等等 l=[] for i in range (1,10): for a in range (i):

我对这个网站和python还是相当陌生的。所以,请原谅我的问题可能不够具体,可能已经有一个答案,我还没有找到

基本上,我在python中遇到了for循环的问题

我想使用
in range()
函数创建列表。每个连续列表应设置下一个数字。比如说

[1,2,3,4,5]
[2,3,4,5,6]
[3,4,5,6,7]
我还希望生成的列表长度相等:例如,5个数字、6个数字或7个数字,等等

l=[]
for i in range (1,10):
    for a in range (i):
        l.append (i)
        print (l[:5])

result is:

[1]
[1, 2]
[1, 2, 2]
[1, 2, 2, 3]
[1, 2, 2, 3, 3]
然后它只是重复3次。但是,我希望下一行2以一个新的数字开始,所以2然后下一行3,以此类推

我将非常感谢您的帮助,或者至少是一个正确方向的提示!
如果这个问题已经得到了回答,我也希望有相应文章的链接

重新开始。一次编写一到两行代码。打印变量以跟踪其值。在知道当前代码满足您的需要之前,不要编写更多的代码。问题的一个重要部分是,您试图在一个过程中编写太多的代码,而您(还)不知道如何处理

让我们从这里开始:

l=[]
for i in range (1,10):
    ...
尽管您清楚地声明希望在每次迭代中都有一个新的起点,但您只初始化了
l
一次。这意味着它将在整个程序运行过程中累积所有附加到它的值,而不是每次都给你一个新的列表

    for a in range (i):
这如何支持您正在尝试做的任何事情?你将迭代一次,然后两次,然后三次。。。你的程序的哪一部分是以这种方式重复的?您清楚地声明希望每个列表具有相同的长度,但随后您会尽力确保每次完成此内部循环时都会积累一个不断增加的列表



这能让你动起来吗?

嘿,克里斯托弗,试试这个

for i in range (0,4):
  l=[]
  for j in range (1+i,6+i):
    l.append (j)
  print(l)     

我想你要做的可能是这样的:

my_lists = []

for i in range(10):
    some_list = []
    for j in range(5):
        some_list.append(i + j)
    print(some_list)
    my_lists.append(some_list)

# or if you're being fancy,
# my_lists = [list(range(i, i + 5)) for i in range(10)]
我不会太担心如何缩短和/或优化各种 现在是一点点。这将为您提供一个很好的列表,其中包括所有较小的 生成的列表。这对你有帮助吗?我会确保你明白发生了什么 在每一个循环中,以及为什么每件事情都是这样结构的

(旁注:每个列表的前三个值之和) 由一个相当简单的算术级数给出,所以如果需要 有效地计算你最好找一个代数闭包
表单。)

您可以编写如下函数:

def makelists(start, end, n):
    sequence = [i for i in range(start, end + 1)]
    if n == 1:
        print(sequence)
    else:
        print(sequence)
        for i in range(1, n):
            sequence = list(map(lambda x: x + 1, sequence))
            print(sequence)

makelists(1, 5, 3)
[1, 2, 3, 4, 5]
[2, 3, 4, 5, 6]
[3, 4, 5, 6, 7]
关于其他投入:

makelists(3, 10, 7)
[3, 4, 5, 6, 7, 8, 9, 10]
[4, 5, 6, 7, 8, 9, 10, 11]
[5, 6, 7, 8, 9, 10, 11, 12]
[6, 7, 8, 9, 10, 11, 12, 13]
[7, 8, 9, 10, 11, 12, 13, 14]
[8, 9, 10, 11, 12, 13, 14, 15]
[9, 10, 11, 12, 13, 14, 15, 16]

你的意思是t下一个列表将是[1,2,2,3,3]?你能再举个例子吗!你需要抓住它们吗?你必须用for循环来构建它们吗?(例如,对于范围(10)中的i是
:打印(列表(范围(i,i+5)))
您想要什么?)不,如果我不够清楚,我很抱歉。我希望在屏幕上以连续、迭代的顺序打印列表。如下所示:[1,2,3,4,5],[2,3,4,5,6],[3,4,5,6,7],[4,5,6,7,8],因此,下一个列表中的所有值都增加了one@ChristopherChandler那么,我给出的代码是否正确呢?克里斯:请注意,Python在range()中没有
函数<
中的code>是一个关键字,后面可以跟其他可编辑的内容,
range()
是内置类(与所有类一样,可以像函数一样调用)。您好,Prune,非常感谢您的详细解释。是的,我注意到它试图一次生成太多的代码,并且基本上被覆盖了。我想将这些值保存为列表,因为我想使用拼接函数l:[5]检索它们。我想找到每个列表前三个值的总和。这是我在开始时尝试的变体(我没有在这里发布代码),但我无法使它正常运行。我真的很感谢你的帮助,Origin。是的,这也很好!非常感谢你。这对我帮助很大,我可以更好地理解流程的逻辑:)