2017-04-27 100 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

是啊我想要其他方式 –