2017-09-06 132 views
1

任何人都可以在Python 3.4.2中解决这个问题吗?在Python中使用.format打印多个列表3.4.2

我有两个列表,我想使用.format()打印每个列表中的特定项目。下面的代码:

names=["Conan", "Belit", "Valeria"] 
ages=[25, 21, 22] 

print("{0} is {1} years old. Whereas {1} is {0} years old.".format(*names, *ages)) 

我的印象是,调用列表中的特定项目下的* LISTNAME需要使用。它适用于单个列表:

print("{0}".format(*names)) 

但是,当我调用多个列表?我已经用星号尝试了两个列表名,都没有,加上符号等等,但没有运气。我似乎得到的是各种语法错误等?

所有我需要做的仅仅是打印:

柯南是21岁。贝利特25岁。

有什么想法?

在此先感谢。只是似乎无法想象解决这个问题的方法。

回答

0

Additional Unpacking是在Python 3.5中添加的,因此您不能在Python 3.4的函数调用中使用多个星号*。它也可作为你想不str.format工作,因为调用

print("{0} is {1} years old. Whereas {1} is {0} years old.".format(*names, *ages)) 

会像与解压的名单称之为:

print("{0} is {1} years old. Whereas {1} is {0} years old.".format(
    "Conan", "Belit", "Valeria", 25, 21, 22)) 

所以这个打印:

Conan is Belit years old. Whereas Belit is Conan years old. 

您可以改为传递两个列表,然后在替换字段内使用字段名称后面的索引,例如。 {0}表示第一个被传递到format的arg(因此在本例中为names列表)和{0[0]}将是列表中的第一个项目。

print("{0[0]} is {1[0]} years old. Whereas {0[1]} is {1[1]} years old.".format(
    names, ages)) 
# Or use keyword arguments. 
print("{names[0]} is {ages[0]} years old. Whereas {names[1]} is {ages[1]} years old.".format(
    names=names, ages=ages)) 
+0

非常奇妙,非常感谢skrx - 像魅力一样工作。它真的开始站起来了。 – DavidH