【问题标题】:How to access the last list in a list如何访问列表中的最后一个列表
【发布时间】:2021-11-21 20:02:43
【问题描述】:

假设我有以下列表。

[1,2,[3,4,5,6,[7,8,[9]]]]

有没有一种简单的方法可以在不执行函数的情况下访问列表 [9]?

【问题讨论】:

  • 对于那个值,x[-1][-1][-1],但我想你的意思是在嵌套列表的一般情况下......
  • list[-1][-1][-1]!?
  • 1) 展平列表; 2) flatten(list)[-1] 最后一个元素
  • 请注意,brtt 请求的是最后一个列表,而不是最后一个元素。

标签: python python-3.x list


【解决方案1】:

你可以使用while循环:

L  = [1,2,[3,4,5,6,[7,8,[9]]]]

lastList = L
while isinstance(lastList[-1],list): 
    lastList = lastList[-1]

print(lastList)
[9]

【讨论】:

    【解决方案2】:

    Lambda 是具有另一种语法的函数,所以这个答案可能不是你真正想要的,但是

    >>> x = [1,2,[3,4,5,6,[7,8,[9]]]]
    >>> z = lambda x: z(x[-1]) if len(x) > 1 else x
    >>> z(x)
    [9]
    

    【讨论】:

    • 这不是一个通用的解决方案。它只适用于这种狭窄的情况。
    • @dawg 但我想这是问题的缺陷。这个问题还不够清楚,解决方案的预期范围有多广。对我来说,考虑到这个问题,它是相当笼统的(就巢穴的深度而言)。这是应该责备什么的问题。
    • 同意。这就是为什么我最初关闭它,但后来看到那里有一匹小马......
    【解决方案3】:

    假设你有:

    li=[1,2,[3,4,5,6,[7,8,[9,10]]]]
    

    您可以使用递归函数来查找最后一个列表:

    def flatten(L):
      last_list=[]
      for item in L:
        try:
          last_list.append(item)
          yield from flatten(item)
        except TypeError:
          yield last_list
    

    然后就是把生成器耗尽,最后一个就是最后一个列表:

    >>> for l in flatten(li): pass
    >>> l
    [9,10]
    >>> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-10
      相关资源
      最近更新 更多