相关疑难解决方法(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万
查看次数

如何找到一组的所有子集,只有n个元素?

我正在用Python编写程序,我意识到我需要解决的一个问题需要我,给定一个Sn元素(| S | = n)的集合来测试某个顺序的所有可能子集上的函数m(即m元素数量).要使用答案生成部分解,然后再次使用下一个阶m = m + 1,直到m = n.

我正在编写表单的解决方案:

def findsubsets(S, m):
    subsets = set([])
    ...
    return subsets
Run Code Online (Sandbox Code Playgroud)

但是知道Python我希望解决方案已经存在.

完成此任务的最佳方法是什么?

python

68
推荐指数
4
解决办法
11万
查看次数

Python将两个列表与所有可能的排列合并

我试图找出将两个列表合并为所有可能组合的最佳方法.所以,如果我从这样的两个列表开始:

list1 = [1, 2]
list2 = [3, 4]
Run Code Online (Sandbox Code Playgroud)

结果列表如下所示:

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

也就是说,它基本上产生一个列表列表,其中包含两者之间的所有潜在组合.

我一直在研究itertools,我很确定答案,但是我无法想出办法让它以这种方式行事.我最接近的是:

list1 = [1, 2, 3, 4]
list2 = [5, 6, 7, 8]
print list(itertools.product(list1, list2))
Run Code Online (Sandbox Code Playgroud)

哪个产生:

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

因此,它会在每个列表中执行所有可能的项目组合,但不是所有可能的结果列表.我怎么做到这一点?

编辑:最终目标是能够单独处理每个列表以确定效率(我正在使用的实际数据更复杂).因此,在上面的原始示例中,它将工作如下:

list1 = [1, 2]
list2 = [3, 4]

Get first merged list: [[1,3], [2, …
Run Code Online (Sandbox Code Playgroud)

python list python-itertools

18
推荐指数
4
解决办法
3万
查看次数