Python:迭代列表中的元组

时间:2017-12-08 21:29:59

标签: python

现在我有代码给我这个输出:

[('KOR', [3, 1, 0]), ('ITA', [1, 0, 0]), ('TPE', [0, 1, 1]), ('CHN', [0, 1, 0]), ('JPN', [0, 1, 0]), ('AUS', [0, 0, 1]), ('GBR', [0, 0, 1]), ('UKR', [0, 0, 1])]

但需要采用以下形式:

['KOR 3 1 0', 'ITA 1 0 0', 'TPE 0 1 1', 'CHN 0 1 0', 'JPN 0 1 0', 'AUS 0 0 1', 'GBR 0 0 1', 'UKR 0 0 1']

如何将数据更改为正确的格式?我一直试图迭代元素,但最接近的是

['KOR', 3, 1, 0, 'ITA', 1, 0, 0, 'TPE', 0, 1, 1, 'CHN', 0, 1, 0, 'JPN', 0, 1, 0, 'AUS', 0, 0, 1, 'GBR', 0, 0, 1, 'UKR', 0, 0, 1]

使用此代码

SessionsAlternative

提前谢谢!

2 个答案:

答案 0 :(得分:1)

提供相同的结构,您可以通过连接每个内部列表的两个索引轻松地在列表理解中展开它:

data = [('KOR', [3, 1, 0]), ('ITA', [1, 0, 0]), ('TPE', [0, 1, 1]), ('CHN', [0, 1, 0]),
        ('JPN', [0, 1, 0]), ('AUS', [0, 0, 1]), ('GBR', [0, 0, 1]), ('UKR', [0, 0, 1])]

flattened = [" ".join(str(e) for e in [item[0]] + item[1]) for item in data]
# ['KOR 3 1 0', 'ITA 1 0 0', 'TPE 0 1 1', 'CHN 0 1 0', 'JPN 0 1 0', 'AUS 0 0 1',
#  'GBR 0 0 1', 'UKR 0 0 1']

答案 1 :(得分:0)

如果您不想使用列表推导,可以按如下方式更改原始代码:

answer = []
for item in data:
    result = item[0]
    for x in item[1]:
        result = result + ' ' + str(x)
    answer.append(result)
return answer