为什么这条线会弄乱整个输出?
Why is this line messing the whole output?
我正在尝试这样做:
输入:“4of Fo1r pe6ople g3ood th5e the2”
输出:“Fo1r the2 g3ood 4of th5e pe6ople”
使用此代码:
test = "4of Fo1r pe6ople g3ood th5e the2"
test = test.split()
x = 0
for i in test:
x = re.search("[1-9]", i)
x = int(x.group(0))-1
test.insert(x, test.pop(test.index(i)))
但出于某种原因,For 循环中的最后一行破坏了 x 的输出(这是字符串列表中元素的新索引)。
最后一行之前(每次迭代后打印 x):
3
0
5
2
1
最后一行之后(每次迭代后打印 x):
3
5
3
3
1
5
当您在 for 循环中使用插入方法时,它会在迭代期间进行这些更新,从而在每次调用时更改每个索引处的值。
如果您在每次迭代结束时添加 print(test)
,您应该明白我的意思。解决此问题的一种方法是创建一个长度与 test
相同的列表,并在每次迭代时填充它。例如:
test = "4of Fo1r pe6ople g3ood th5e the2"
test = test.split()
x = 0
new_list = [0] * len(test)
for i in test:
x = re.search("[1-9]", i)
x = int(x.group(0))-1
new_list[x] = i
我正在尝试这样做:
输入:“4of Fo1r pe6ople g3ood th5e the2”
输出:“Fo1r the2 g3ood 4of th5e pe6ople”
使用此代码:
test = "4of Fo1r pe6ople g3ood th5e the2"
test = test.split()
x = 0
for i in test:
x = re.search("[1-9]", i)
x = int(x.group(0))-1
test.insert(x, test.pop(test.index(i)))
但出于某种原因,For 循环中的最后一行破坏了 x 的输出(这是字符串列表中元素的新索引)。
最后一行之前(每次迭代后打印 x):
3
0
5
2
1
最后一行之后(每次迭代后打印 x):
3
5
3
3
1
5
当您在 for 循环中使用插入方法时,它会在迭代期间进行这些更新,从而在每次调用时更改每个索引处的值。
如果您在每次迭代结束时添加 print(test)
,您应该明白我的意思。解决此问题的一种方法是创建一个长度与 test
相同的列表,并在每次迭代时填充它。例如:
test = "4of Fo1r pe6ople g3ood th5e the2"
test = test.split()
x = 0
new_list = [0] * len(test)
for i in test:
x = re.search("[1-9]", i)
x = int(x.group(0))-1
new_list[x] = i