重新格式化嵌套的元组列表时出现问题?

时间:2017-01-05 17:27:55

标签: python list python-3.x list-comprehension

在进行大量重新格式化后,我有以下lis个元组:

[[(('A', 'X'), ('43,23', 'Y'), ('wepowe', 'd'))]]

我如何重新格式化为:

'A', '43,23', 'wepowe'

我试图:

[' '.join(map(str,lis[0][0])) for x in lis]

[' '.join(map(str,lis[0][:1])) for x in lis]

' '.join(map(str, lis))

但是,我没有得到所需的格式。哪种方法可以像上面那样重新格式化元组和列表?

3 个答案:

答案 0 :(得分:6)

你可以像这样使用list comprehension

my_list = [(('A', 'X'), ('43,23', 'Y'), ('wepowe', 'd'))]
result = [item[0] for item in my_list[0]]

<强>输出:

>>> result
['A', '43,23', 'wepowe']

答案 1 :(得分:3)

您可以将zip用作:

>>> my_list = [(('A', 'X'), ('43,23', 'Y'), ('wepowe', 'd'))]
>>> new_list , _ = zip(*my_list[0])
#              ^ replace this with some variable in case you also want the
#                elements at `1`st index of each tuple

new_list保留的值为:

>>> new_list
('A', '43,23', 'wepowe')

答案 2 :(得分:2)

在你编写任何列表之前,comprehensions让我们使用2个for循环遍历列表,例如:

tups = [(('A', 'X'), ('43,23', 'Y'), ('wepowe', 'd'))]

for item in tups:
    for j in item:
        print j[0]

现在,如果您看到我们正在寻找每个元组的第一个元素,我们可以将其转换为列表推导表达式,如下所示:

' '.join(str(j[0]) for item in tups for j in item)