【问题标题】:How to unpack a tuple of lists如何解压列表元组
【发布时间】:2019-03-24 02:03:33
【问题描述】:

我正在尝试解压缩一个包含在元组中的列表的元素。

myTuple = (['a', 'list', 'of', 'strings'], ['inside', 'a', 'tuple'], ['extra', 'words', 'for', 'filler'])

所以例如我想得到这个元素('a')

我试过这个:

for (i, words) in list(enumerate(myTuple)):
    print(words)

但这会返回这样的列表

['a', 'list', 'of', 'strings']
['inside', 'a', 'tuple']
etc...

如何获取列表中的元素?

【问题讨论】:

  • 您正在解压一个包含列表的元组。要获取列表中的元素,您可以索引列表,或对其进行迭代。
  • 你想要像'a','list','of','strings','inside','a','tuple',...这样的输出吗?
  • 旁注:for i, words in enumerate(myTuple): 是您获得行为所需要的一切。包裹 list 只是做一个不必要的临时,你不需要在 i, words 部分周围加上括号。
  • @Haramoz 是的,我想要 'a'、'list' 等。

标签: python list tuples enumerate unpack


【解决方案1】:

您可以使用元组的索引,然后使用列表来访问最内层的元素。例如,要获取字符串'a',您可以调用:

myTuple[0][0]

如果您想遍历列表中的所有元素,可以使用chain 方法形式itertools。例如:

from itertools import chain

for i in chain(*myTuple):
    print(i)

【讨论】:

  • chain 正是我想要的。完美运行。
【解决方案2】:

您可以使用reduce,例如。用 numpy

from functools import reduce
reduce(append, myTuple)

Out[149]: 
array(['a', 'list', 'of', 'strings', 'inside', 'a', 'tuple', 'extra',
       'words', 'for', 'filler'], dtype='<U7')

或者,基础

import operator
from functools import reduce
reduce(operator.add, myType, [])
# or, reduce(lambda x, y: x + y, myTuple)

reducemapfilter等一起是经典的列表操作函数。它接受一个初始值,这里是一个空列表,并依次对每个元素应用一个函数(append)序列(myTuple)。

【讨论】:

  • 一个很好的答案,你能不能也解释一下,谢谢:)
  • 好的,我添加了一个简短的描述。不过这个功能很基础。
  • 刚刚在空闲时快速尝试过这个... 说append 没有定义?我做错了什么?
  • 哦,我用的是numpy,我给base加一个
【解决方案3】:

目前您只是遍历整个循环并打印出列表中包含的元素。

但是,如果您想访问列表中的特定元素,则只需使用 .index() 通过其名称引用它

或者你可以只打印(list(indexposition))

【讨论】:

    猜你喜欢
    • 2014-08-26
    • 2020-12-14
    • 1970-01-01
    • 2014-07-13
    • 1970-01-01
    • 2014-01-05
    • 2011-11-25
    • 1970-01-01
    相关资源
    最近更新 更多