2017-04-27 44 views
-3

幫助!我需要改變什麼才能讓它變成這樣?添加列表python

[('Mavis', 3), ('Ethel', 1), ('Rick', 2), ('Joseph', 5), ('Louis', 4)] 

現在,用我的代碼,它出現這樣。

bots_status = [(bot_one_info) + (bot_two_info) + (bot_three_info) + (bot_four_info) + (bot_five_info)] 

[( '馬維什',3 '埃塞爾',1, '瑞克',2 '約瑟夫',5 '路易斯',4)]

+1

至少,顯示'bot_one_info'值 – RomanPerekhrest

+0

bot_one_info會是('Mavis',3)! –

回答

1

在你的機器人之間插入逗號而不是+號。 如果使用可變數量的條目,請初始化數組並使用append將其添加到數組中。

bots_status = [] 
for bot_info in bot_infos: 
    bots_status.append(bot_info) 
+0

哎呀傻我。這很簡單。謝謝! –

+2

我不明白這個循環的目的。如果你已經有了'bot_infos'作爲列表,你爲什麼要循環它們以將這些項目添加到另一個列表......? (有些顯而易見的是,OP不會*列出這些項目,否則這個問題就不存在了。) – poke

+0

這是爲了演示的目的。 OP可能想要迭代bot對象而不是字符串。儘管如此,我會記住在將來更清楚地說明這一點。 –

1

更換加分(+)用逗號(,),使這個元組,而不是一個連結元組的列表,列表:

bots_status = [bot_one_info, bot_two_info, bot_three_info, bot_four_info, bot_five_info] 

因爲你bot_x_info變量已經是元組,你也不必給我們名稱周圍的圓括號(那些沒有做任何事情)。


你的代碼的問題是你在元組上使用+。 add操作符將元組連接到一個元組中:

>>> (1, 2) + (3, 4) 
(1, 2, 3, 4) 

這就是爲什麼你最終會在列表中出現一個巨大的元組。

你想要的是每個元組都作爲列表中的一個單獨的項目,所以你只需要創建一個列表。就像你會用[1, 2, 3]創建一個包含三個項目的列表一樣,使用逗號分隔每個項目,也可以用其他值(例如,你的情況中的元組。

+0

你能看看我的回答中的第一個陳述嗎,我在這裏有矛盾。幫助我理解。 – bhansa

+0

@Bhansa我不確定你在問什麼。在元組上使用'+'會連接元組(使它成爲一個組合的單一值)。使用逗號將使每個元組成爲列表中的單獨項目。 – poke

+0

和OP想要單個元組列表的權利?所以'+'滿足這裏的條件,爲什麼','那麼?希望你能理解。 – bhansa

0

比方說:

bot_one_info = ('Mavis', 3) 
bot_two_info = ('Mavi', 3) 

如果使用+

lis = [bot_one_info + bot_two_info] 
print lis 
#Output 
[('Mavis', 3, 'Mavi', 3)] 

但是如果你使用,

lis = [bot_one_info,bot_two_info] 
print lis 
#Output 
[('Mavis', 3), ('Mavi', 3)] 

您可以使用此,代替+

+0

OP想要它。 – poke

+0

是啊我想要其他方式 –