2017-09-06 135 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