首页 > 解决方案 > 将元组附加到列表中

问题描述

我是python新手。是否可以将我的元组添加到空列表中,但是以有序的方式?

我知道该if i not in myTransfer:部分也不理想,但只是为了获得更清晰的输出。我尝试在下面的代码中执行此操作,但如果有更简单的解决方案将不胜感激

tupDays = ('Monday', 'Wednesday', 'Monday')
tupAmount = (100,300,100)
myTransfer = []

for a in tupAmount:
    myTransfer.append(a)
    for i in tupDays:
        if i not in myTransfer:
            myTransfer.append(i)

print(myTransfer)

我想得到的是:

[100,Monday,200,Wednesday,100,Monday]

也许将它放在字典中会更好,因此它可以成为键值对,如下所示,但我似乎无法掌握我需要使用的内置方法。

{
100: 'Monday',
300: 'Tuesday',
100: 'Monday'
}

Thank you so much for the help.

标签: pythonlistdictionarytuples

解决方案


一种方法是使用zipitertools.chain
在这里,我假设 2 个元组具有相同的长度。

import itertools

my_transfer = list(itertools.chain(*zip(tupAmount, tupDays)))
# [100, 'Monday', 300, 'Wednesday', 100, 'Monday']

这个怎么运作:

1) zip 聚合来自两个元组的元素。

>>> list(zip(tupAmount, tupDays))
[(100, 'Monday'), (300, 'Wednesday'), (100, 'Monday')]

2) itertools.chain 从可迭代对象返回元素。星号运算符解包元组列表。这对应于:

>>> list(itertools.chain((100, 'Monday'), (300, 'Wednesday'), (100, 'Monday')))
[100, 'Monday', 300, 'Wednesday', 100, 'Monday']

3) 最后,list() 构造一个列表


推荐阅读