小编Dav*_*ker的帖子

以子列表的形式获取列表的所有可能组合

我想知道是否有人可以帮助完成以下任务:当顺序无关紧要时,如何将列表的所有组合拆分为子列表?

假设我有一个包含 4 个项目的列表:

import itertools as it

a = [1, 2, 3, 4]
print(list(it.combinations(a, 2)))
Run Code Online (Sandbox Code Playgroud)

这会给我一个包含 6 个可能对的列表:

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

如何制作(用它?或任何其他方式)一组[1, 2, 3, 4]以任何顺序包含原始序列的列表?因此,对于此示例,它将包含三个子列表:

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

更新:一个小的澄清:换句话说,当 n 元组中的顺序无关紧要时,我需要获取所有 n 元组集,以便它们的成员包含原始列表的所有人口。因此[(1, 2), (3, 4)]可以,但[(2, 1), (3, 4)]如果我们忽略顺序,则不需要,因为它与第一组相同。

UPDATE2:因此对于长度为 6 的列表和大小为 2 的块,此fun函数应按如下方式工作:

import itertools as it
a = [1, 2, 3, …
Run Code Online (Sandbox Code Playgroud)

python combinations combinatorics python-itertools

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

使用asyncio在django中执行定期任务

您是否认为可以使用asyncio在django中每n秒运行一次任务,这样主进程就不会被阻塞?

例如,在控制台中每5分钟打印一次,例如:

    import asyncio
    from random import randint

    async def do_stuff(something, howmany):   
        for i in range(howmany):
            print('We are doing  {}'.format(something))
            await asyncio.sleep(randint(0, 5))

    if __name__ == '__main__':
        loop = asyncio.get_event_loop()
        work = [
            asyncio.ensure_future(do_stuff('something', 5)),

        ]
        loop.run_until_complete(asyncio.gather(*work))
Run Code Online (Sandbox Code Playgroud)

似乎django将在循环运行时停止工作.即使这可以在开发中工作,当网站在像apache或gunicorn这样的东西上线时它会如何表现?

python django multithreading periodic-task python-asyncio

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

具有在原始集中没有匹配的对的列表列表

我有一组列表形式的元组:

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

在这样的顺序中没有必要,它也可以:

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

这些列表有两个属性:

  • 如果排序和展平,他们将成为从1到n(像[1, 2, 3,..n])的范围
  • n 甚至
  • n 大于2

  • 所有值都是唯一的(没有值重复).

所以,让我说我有:

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

创建元组列表的方法是什么b,a这样就不会有原始元组?

所以例如

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

没事,但是

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

不好,因为它包含(1, 2)(5, 6)呈现在a

PS :( 标题很乱,但我不知道怎么解释得更好(很乐意编辑).

python combinations list-comprehension

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