matrix1
是一个列表列表。我的代码检查matrix1[i][5]
和matrix1[i+1][5]
是否包含连续的数字。如果是,则确定,如果不是,则在i+1应对策略中插入一个新列表,并将matrix1[i+1][5]
值增加1。这是我心目中的想法,但在现实世界中,代码不起作用。如果matrix1[i][5]=1
和matrix1[i+1]=4
我的代码应该在第一个列表之后和matrix1[i+1]
之前添加2个列表,并更改编号,因此在末尾我没有在1和4之间穿洞,但所有连续的编号和结果都应该是1 2 3 4。但是用我的代码,结果是3。。有人能帮我吗
for i in range(0, len(matrix1)-1):
if int(matrix1[i][5])==int(matrix1[i+1][5])-1:
continue
else:
matrix1.insert(i+1, matrix1[i])
matrix1[i+1][5]=int(matrix1[i][5])+1
我看到两个问题:
当您有一个列表
a = [0, 1]
并说b = a; b[0] = 100; print(a[0])
时,仍然会得到100
的输出。为什么?因为在Python中将列表分配给变量不会复制该列表相反,它使新变量引用与旧变量相同的内存,因此修改一个变量会修改所有变量。这就是你在这里犯的错误:matrix1.insert(i+1, matrix1[i])
。您可以通过bunch of ways创建副本。我将使用列表理解来迭代列表,只是为了检查它,就像这样:b = [x for x in a]
在遍历列表的for循环中修改列表(插入/删除项)是个坏主意。相反,最好创建一个包含所有您关心的值的新列表
假设您有这样一个
matrix1
:现在让我们定义另一个列表
matrix2
,该列表暂时为空现在我们将把每一行复制到新的矩阵中。如果
matrix1[i][5]
和matrix1[i + 1][5]
不是连续的,我们还将把所有必要的新行插入到新矩阵中这将提供以下输出:
或者,一种更简单的方法:我们可以简单地取消对连续性的检查,只使用
for j
循环,因此我们可以根据需要插入尽可能多的行,将我们从matrix1[i][5]
带到matrix1[i + 1][5]
。如果它们是连续的,我们将只插入一行相关问题 更多 >
编程相关推荐