【问题标题】:how to break elements in a python list如何打破python列表中的元素
【发布时间】:2019-04-06 12:35:51
【问题描述】:

我在以下列表中有一个元素:

  [0.29839835, [734, 805, 679, 758], 'A']

我要改成

  [0.29839835, 734, 805, 679, 758, 'A']

只需将内部元素集 [734, 805, 679, 758] 从一个元素分解为 4 个元素。请问有什么线索吗?

【问题讨论】:

  • @Chris_Rands,有更好的欺骗目标吗?虽然目标有 49 个答案,但其中没有一个有 itertools 解决方案,实际上这可能是因为那里的问题更笼统。在这种情况下,我下面的回答不适合那个问题。
  • @jpp 3个解决方案首页使用itertools在欺骗目标,如果你有更好的,当然请添加它
  • @Chris_Rands,你误解了我的意思。为 this specific use case 添加我的解决方案对更一般的问题毫无意义。因为它没有回答这个问题。虽然在这里它可以。不要误会我的意思,我会将我的答案保留为社区 wiki。我只是看不到有人如何查看那里的答案并想出我在下面的解决方案。 或者我如何在那里添加我的答案。
  • @jpp 您可以根据需要重新打开它
  • @jpp,@chris_Rands 更新了问题

标签: python python-3.x pandas list numpy


【解决方案1】:

这个问题已经回答here:

l = [0.29839835, [734, 805, 679, 758], 'A']
a = list()
def flatten(l, a):
    for i in l:
        if isinstance(i, list):
            flatten(i, a)
        else:
            a.append(i)
    return a
print(flatten(l, a))
#[0.29839835, 734, 805, 679, 758, 'A']

【讨论】:

    【解决方案2】:

    对于您的特定数据结构,您可以使用带有三元条件的itertools.chain

    from itertools import chain
    
    x = [0.29839835, [734, 805, 679, 758], 'A']
    
    res = list(chain.from_iterable([i] if not isinstance(i, list) else i for i in x))
    
    [0.29839835, 734, 805, 679, 758, 'A']
    

    有关通用解决方案,请参阅Flatten an irregular list of lists

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多