打印列表x次并更改其元素python

时间:2016-06-14 16:01:19

标签: python list

我在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

你知道我怎么能得到这个结果?我究竟做错了什么?谢谢

3 个答案:

答案 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))