相关疑难解决方法(0)

如何从列表列表中制作一个平面列表?

我想知道是否有一条快捷方式可以在Python列表中列出一个简单的列表.

我可以在for循环中做到这一点,但也许有一些很酷的"单行"?我用reduce尝试了,但是我收到了一个错误.

l = [[1, 2, 3], [4, 5, 6], [7], [8, 9]]
reduce(lambda x, y: x.extend(y), l)
Run Code Online (Sandbox Code Playgroud)

错误信息

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <lambda>
AttributeError: 'NoneType' object has no attribute 'extend'
Run Code Online (Sandbox Code Playgroud)

python list flatten multidimensional-array

2950
推荐指数
29
解决办法
184万
查看次数

如何在Python中扩展/连接两个迭代器

我希望以有效的方式连接两个迭代器.

假设我们有两个迭代器(在Python3中)

l1 = range(10)      # iterator over 0, 1, ..., 9
l2 = range(10, 20)  # iterator over 10, 11, ..., 19
Run Code Online (Sandbox Code Playgroud)

如果我们将它们转换为列表,就很容易连接起来

y = list(l1) + list(l2)  # 0, 1, ,..., 19
Run Code Online (Sandbox Code Playgroud)

但是,这可能效率不高.

我想做点什么

y_iter = l1 + l2  # this does not work
Run Code Online (Sandbox Code Playgroud)

在Python3中执行此操作的好方法是什么?

python iterator list python-3.x

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

os.walk一次多个目录

可能重复:
如何在Python中连接两个生成器?

有没有办法在python中使用os.walk一次遍历多个目录?

my_paths = []
path1 = '/path/to/directory/one/'
path2 = '/path/to/directory/two/'
for path, dirs, files in os.walk(path1, path2):
    my_paths.append(dirs)
Run Code Online (Sandbox Code Playgroud)

上面的例子不起作用(因为os.walk只接受一个目录),但我希望有一个更优雅的解决方案,而不是两次调用os.walk(加上我可以一次排序).谢谢.

python os.walk

11
推荐指数
3
解决办法
6767
查看次数

将Iterators链接到Flat Iterator

尝试使用itertools中的链来解决我的问题.我有一个迭代器列表,我想得到一个迭代器,以无缝方式迭代列表中的迭代器项.有办法吗?也许另一种工具而不是链条会更合适?

我的代码的简化示例:

iter1 = iter([1,2])
iter2 = iter([3,4])
iter_list = [iter1, iter2]
chained_iter = chain(iter_list)
Run Code Online (Sandbox Code Playgroud)

期望的结果:

chained_iter.next() --> 1
chained_iter.next() --> 2
chained_iter.next() --> 3
chained_iter.next() --> 4
Run Code Online (Sandbox Code Playgroud)

实际结果:

chained_iter.next() --> <listiterator at 0x10f374650>
Run Code Online (Sandbox Code Playgroud)

python iterator python-itertools python-2.7

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