我想为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
但是,这不起作用。有没有一种在列表中添加变量的最佳方法?
答案 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