任何人都可以解释我在Python 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 :(得分:0)
Additional Unpacking,因此您无法在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))