我在Python中一直在努力解决这个问题。 我有一个列表,其中包含一些文字: x = [" line1 \ n"," line2 \ n"," line3 \ n"] 然后我想修改它的元素并打印列表3次。这是我现在的代码:
for y in range(3):
for n,i in enumerate(x):
if i == 'line1\n':
x[n] = 'line1' + str(y) + '\n'
if i == 'line2\n':
x[n] = 'line2' + str(y) + '\n'
if i == 'line3\n':
x[n] = 'line3' + str(y) + '\n'
print(''.join(x))
这给了我:
line10
line20
line30
3次。但我想得到的是:
line10
line20
line30
然后
line11
line21
line31
等
你知道我怎么能得到这个结果?我究竟做错了什么?谢谢
答案 0 :(得分:1)
for y in range(3):
for n,i in enumerate(x):
if i == 'line1\n':
x[n] = 'line1' + str(y) + '\n'
if i == 'line2\n':
x[n] = 'line2' + str(y) + '\n'
if i == 'line3\n':
x[n] = 'line3' + str(y) + '\n'
将每行设置为
x[n] = 'line1' + 0 + '\n'
,
x[n] = 'line2' + 0 + '\n'
,
x[n] = 'line3' + 0 + '\n'
然后当你第二次循环回来时,没有一行符合你要检查的条件。
答案 1 :(得分:0)
如果我理解你正在努力实现的目标,那就是解决方案:
我将str(y)
更改为str(n)
,这是错误计数的来源。
x = ["line1\n", "line2\n", "line3\n"]
for n, i in enumerate(x):
if i == 'line1\n':
x[n] = 'line1' + str(n) + '\n'
if i == 'line2\n':
x[n] = 'line2' + str(n) + '\n'
if i == 'line3\n':
x[n] = 'line3' + str(n) + '\n'
for y in range(3):
print(''.join(x))
但是这段代码没有多大意义,因为我不知道上下文,所以这可能不是你想要的。
答案 2 :(得分:0)
您的枚举第一次正确运行,并将所有行更改为
x[0] = line10\n
x[1] = line20\n
x[2] = line30\n
然后你的if语句不再适用。他们仍然在寻找if x[0] == 'line1\n':
,但现在正在x[0] = line10\n
你能不能按照他们在数组中的位置来检查它们吗?
for y in range(3):
for n in enumerate(x):
if n == 0
x[n] = 'line1' + str(y) + '\n'
if n == 1
x[n] = 'line2' + str(y) + '\n'
if n == 2
x[n] = 'line3' + str(y) + '\n'
print(''.join(x))