Python:在lis中迭代元组

2024-09-28 19:23:32 发布

您现在位置: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]

通过使用此代码

for item in alist:
    for x in item:
        answer.append(x)

for item in answer:
    if type(item)==str:
        answer2.append(item)
    else:
        for f in item:
            answer2.append(f)
return answer2

提前谢谢


Tags: 代码answerinforitemappenditachn
2条回答

如果您不想使用列表理解,您的原始代码可以更改如下:

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

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

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']

相关问题 更多 >