使用Python将变量添加到列表中

时间:2017-12-15 18:55:17

标签: python list format

我想为mylist中的某些项添加变量= [' A',' B',' C',' D&# 39;,' E']。我试过像这个例子......

for direction in ['Up', 'Down']:
    mylist = ['A{}', 'B', 'C{}', 'D', 'E'].format(direction)
    for x in mylist:
        print x

我希望输出如下......

AUp
B
CUp
D
E
ADown
B
CDown
D
E

但是,这不起作用。有没有一种在列表中添加变量的最佳方法?

4 个答案:

答案 0 :(得分:4)

你不能"矢量化"这种格式化操作!它应该分别对每根弦进行操作。

data = ['A{}', 'B', 'C{}', 'D', 'E']
direction = ['Up', 'Down']

for d in direction:
     print(*[x.format(d) for x in data], sep='\n')

AUp
B
CUp
D
E
ADown
B
CDown
D
E

迭代direction,并在循环中调用format。如果您正在使用python3,则可以使用带有*参数的sep可迭代解包。

对于python2,在文件顶部添加__future__ import语句,如下所示 -

from __future__ import print_function

然后,您可以使用print功能达到同样的效果。

答案 1 :(得分:1)

我会这样做

mylist = ['A{}', 'B', 'C{}', 'D', 'E']
for direction in ['Up', 'Down']:
    for x in mylist:
        x = x.format(direction)
        print(x)

答案 2 :(得分:1)

保留原始mylist

mylist = ['A', 'B', 'C', 'D', 'E']
for direction in ['Up', 'Down']:
    for x in mylist:
        print x + direction if x in ['A', 'C'] else x

答案 3 :(得分:0)

  

我的方法几乎没有,你可以不用没有循环   在一行中使用两个循环但结果将采用列表格式:

 print(list(map(lambda x:list(map(lambda y:y.format(x),data)),direction)))

输出:

[['AUp', 'B', 'CUp', 'D', 'E'], ['ADown', 'B', 'CDown', 'D', 'E']]

但是如果你想要新行中的每个元素,那么你必须迭代:

for k in direction:
    for i in data:
        print(i.format(k))

输出:

AUp
B
CUp
D
E
ADown
B
CDown
D
E