相关疑难解决方法(0)

压扁不规则的列表列表

是的,我知道这个主题已经被覆盖过了(这里,这里,这里,这里),但据我所知,除了一个之外,所有解决方案都在这样的列表中失败:

L = [[[1, 2, 3], [4, 5]], 6]
Run Code Online (Sandbox Code Playgroud)

期望的输出是什么

[1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

或者甚至更好,一个迭代器.我看到的唯一适用于任意嵌套的解决方案可以在这个问题中找到:

def flatten(x):
    result = []
    for el in x:
        if hasattr(el, "__iter__") and not isinstance(el, basestring):
            result.extend(flatten(el))
        else:
            result.append(el)
    return result

flatten(L)
Run Code Online (Sandbox Code Playgroud)

这是最好的型号吗?我忽略了什么吗?任何问题?

python optimization list flatten

412
推荐指数
16
解决办法
12万
查看次数

通过列表理解来平整列表清单

我试图在python中使用list comprehension来压缩列表.我的名单有点像

[[1, 2, 3], [4, 5, 6], 7, 8]
Run Code Online (Sandbox Code Playgroud)

只是为了打印这个列表中的单个项目我写了这段代码

   def flat(listoflist):
     for item in listoflist:
             if type(item) != list:
                     print item
             else:
                     for num in item:
                             print num  
>>> flat(list1)
1
2
3
4
5
6
7
8
Run Code Online (Sandbox Code Playgroud)

然后我使用相同的逻辑通过列表理解展平我的列表我得到以下错误

    list2 = [item if type(item) != list else num for num in item for item in list1]
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    TypeError: 'int' object is not iterable
Run Code Online (Sandbox Code Playgroud)

如何使用列表理解来展平这种类型的列表?

python list-comprehension list python-2.7

13
推荐指数
2
解决办法
5180
查看次数

编写列表解析以展平嵌套列表

我有一个嵌套列表与列表和数字混合.

nested = [[1, 2, 3], [4, 5, 6], [7, 8], [9], 10, 11]
Run Code Online (Sandbox Code Playgroud)

嵌套列表只包含数字,它们永远不会包含更多列表.

是否可以编写列表推导来从'嵌套'列表中创建新列表,产生以下输出?

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
Run Code Online (Sandbox Code Playgroud)

这是我的尝试(代码不起作用)

[num if isinstance(item, list) for num in item else item for item in nested]
Run Code Online (Sandbox Code Playgroud)

python list-comprehension list python-3.x

1
推荐指数
1
解决办法
742
查看次数