Python循环和创建单独的列表

Python循环和创建单独的列表,python,Python,我的主要问题是如何迭代for/while循环来改变起始元素的位置。我有一个包含六个元素的小列表 x= [34,37,38,36,38,43] 我想创建一个距离矩阵,这样当它第一次遍历x时,它会计算从34到34的距离,并将这些值存储为一个列表。然后下次从37开始计算距离(现在不包括34,因此每个连续列表将比前一个列表短一个) 我从初始化一些东西的代码开始 x= [34,37,38,36,38,43] x_list = [] i=1 k=i-1 接下来,我运行代码 for i in range

我的主要问题是如何迭代for/while循环来改变起始元素的位置。我有一个包含六个元素的小列表

x= [34,37,38,36,38,43]
我想创建一个距离矩阵,这样当它第一次遍历x时,它会计算从34到34的距离,并将这些值存储为一个列表。然后下次从37开始计算距离(现在不包括34,因此每个连续列表将比前一个列表短一个)

我从初始化一些东西的代码开始

x= [34,37,38,36,38,43]
x_list = []
i=1
k=i-1
接下来,我运行代码

for i in range (i,len(x)):
    z = abs(x[i] - x[k])
    x_list.append(z)
然后我运行print语句来打印我想要的列表

print(x_list) #which returns correct output [3, 4, 2, 4, 9] for the first list

现在我希望I的值增加到2,这样k=1,当我在一个单独的列表中遍历距离时,它应该返回[1,1,1,6],但我不确定如何执行此操作,因为我已经退出了循环,我不想每次都硬编码I

我相信您正在寻找的是循环中的一个循环(a嵌套用于循环)

产出:

[3,4,2,4,9]

[1,1,1,6]

[2,0,5]

[2,7]

[5]

如果您想要一个稍微复杂一点的代码,该代码还可以保存每次迭代的结果(通过使用2D列表数组),下面是代码:

x = [34,37,38,36,38,43]

x_list = [[0] * 0 for i in range(len(x) - 1)] # generator makes us a 2D array

for j in range (1, len(x)): 
    k = j - 1 
    for i in range (j, len(x)): 
        z = abs(x[i] - x[k]) 
        x_list[j - 1].append(z) # notice we use the array to get the right list

for iteration in x_list: # loop through the x_list outer array
    print(iteration) # print out the distances for list

产出:


(同上)

我相信您要查找的是循环中的循环(嵌套的
for循环)

产出:

[3,4,2,4,9]

[1,1,1,6]

[2,0,5]

[2,7]

[5]

如果您想要一个稍微复杂一点的代码,该代码还可以保存每次迭代的结果(通过使用2D列表数组),下面是代码:

x = [34,37,38,36,38,43]

x_list = [[0] * 0 for i in range(len(x) - 1)] # generator makes us a 2D array

for j in range (1, len(x)): 
    k = j - 1 
    for i in range (j, len(x)): 
        z = abs(x[i] - x[k]) 
        x_list[j - 1].append(z) # notice we use the array to get the right list

for iteration in x_list: # loop through the x_list outer array
    print(iteration) # print out the distances for list

产出:


(同上)

需要两个for循环

x= [34,37,38,36,38,43]
out = [[abs(i-j) for j in x[n+1:]] for n, i in enumerate(x[:-1])]
print(out)
#prints
[[3, 4, 2, 4, 9], [1, 1, 1, 6], [2, 0, 5], [2, 7], [5]]

你需要两个for循环

x= [34,37,38,36,38,43]
out = [[abs(i-j) for j in x[n+1:]] for n, i in enumerate(x[:-1])]
print(out)
#prints
[[3, 4, 2, 4, 9], [1, 1, 1, 6], [2, 0, 5], [2, 7], [5]]

我有一种感觉,它将在这里帮助您。我同时允许您在给定列表项和列表索引的列表中进行迭代。更多信息我有一种感觉,它将在这里帮助您。我同时允许您在给定列表项和列表索引的列表中进行迭代。更多信息对代码进行编辑,以便打印出来每个循环中的距离对代码进行了编辑,以便打印出每个循环中的距离