【问题标题】:print numbers of list without Square brackets打印不带方括号的列表编号
【发布时间】:2018-04-02 21:22:21
【问题描述】:

例如,我有很多方括号的数字列表,我想打印这样的代码没有括号

L = [[[1, 2, 3], [4, 5]], 6]
output:
[1,2,3,4,5,6]

【问题讨论】:

  • 这篇文章不是重复的:)
  • 但是——它接近是重复的。首先展平列表是自然而然的第一步,特别是因为生成的展平列表很可能还有其他用途。
  • @eyllanesc 但是 OP 想要外部括号,所以不是真正的重复
  • 我想要功能

标签: python python-3.x


【解决方案1】:

如果所有你想做的是打印(x 适当平衡):

x=[1,[9,[[[[[2]]]]]],[[[2],[12,[2]],[10]]
print('[' + ''.join(c for c in str(x) if not c in '[]') +']') 

输出:

[1, 9, 2, 2, 12, 2, 10]

这是临时的。首先flatteningx 在很多方面是一个更自然的解决方案。

【讨论】:

  • 不应该是','.join()吗?
  • 可能的解决方案:print("["+x.replace("[", "").replace("]", "")+"]")
  • @eyllanesc 这也是一种自然的方法
【解决方案2】:

使用递归函数:

def flatten(list):
    if type(list)==list:
        answer = []
        for item in list:
            answer += flatten(item)
        return answer
    else:
        return list

print(flatten(x))

解释:

递归函数将逐步分解列表,并且对于每个子列表,它将在较小的子列表上调用自己。

【讨论】:

    【解决方案3】:

    单线递归:

    def flat(l):
        return [i for ll in l for i in (flat(ll) if type(ll) is list else [ll])]
    

    还有一个测试:

    >>> flat([[[1, 2, 3], [4, 5]], 6])
    [1, 2, 3, 4, 5, 6]
    

    【讨论】:

      【解决方案4】:

      一个更“hacky”的解决方案可能包括使用正则表达式:

      import re
      L = [[[1, 2, 3], [4, 5]], 6]
      new_s = list(map(int, re.findall('\d+', str(L))))
      

      输出:

      [1, 2, 3, 4, 5, 6]
      

      【讨论】:

        猜你喜欢
        • 2012-01-12
        • 1970-01-01
        • 1970-01-01
        • 2020-04-12
        • 1970-01-01
        • 2012-06-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多