在 Python 中,如何按顺序生成一串 0 和 1 的所有排列?

烫发。Questiin

我正在尝试排列任意长度的 0 和 1 字符串。我已经看到很多关于这个主题的答案,这样长度为 n 的字符串的结果将是这样的n=3

000
001
010
011
100
101
110
111

但这不是我需要的!

对于长度 3,我需要它是这样的:

000
100
010
001
110
101
011
111

对于长度 4,这将是:

0000
1000
0100
0010
0001
1100
1010
1001
0110
0101
0011
1110
1101
1011
0111
1111

对于长度 5,它将是:

00000
10000
01000
00100
00010
00001
11000
10100
10010
10001
01100
01010
01001
00110
00101
00011
11100
11010
11001
10110
10101
10011
01110
01101
01011
00111
11110
11101
11011
10111
01111
11111

等等..

我只是想不出一个算法,有人可以帮我吗?

编辑:我弹出提示我可以在本网站的其他地方找到答案。我是新来的,所以我可能没有正确理解,但我在两个问题中看到的唯一重叠是排列这个词。

保罗·潘泽

这对我有用。但是,它不会按顺序生成元素,而是先生成元素,然后对它们进行排序。

n = 5
i = np.array(np.indices(n * (2,))).reshape(n, -1)
i[:, np.argsort(i.sum(0)[::-1], kind='mergesort')].T[::-1]

它使用稳定的排序,即在平局的情况下保留原始顺序的排序,按其数字总和对二进制字进行排序。

可以构建按顺序生成单词的解决方案 itertools

itertools.chain((n*(0,),), (l[0] * (0,) + sum(((1,) + (i-j-1) * (0,) for i, j in zip(l[1:], l[:-1])), ()) + (1,) + (n-l[-1]-1)*(0,) for k in range(1,n+1) for l in itertools.combinations(range(n), k)))

这会遍历k的数量k = 0 是特殊情况并使用 前置itertools.chain)。对于每个k,它用于itertools.combinations创建集合 `{0, 1, ..., n -1} 的所有k 个元素子集l并将每个子集转换为二进制字。这种转换的工作原理是为l 的每个元素放置一个1并计算它们之间必须有多少个零。前导零和尾随零必须是特殊情况。

示例输出numpy

# array([[0, 0, 0, 0, 0], [1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0],
         [0, 0, 0, 1, 0], [0, 0, 0, 0, 1], [1, 1, 0, 0, 0], [1, 0, 1, 0, 0],
         [1, 0, 0, 1, 0], [1, 0, 0, 0, 1], [0, 1, 1, 0, 0], [0, 1, 0, 1, 0],
         [0, 1, 0, 0, 1], [0, 0, 1, 1, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 1],
         [1, 1, 1, 0, 0], [1, 1, 0, 1, 0], [1, 1, 0, 0, 1], [1, 0, 1, 1, 0],
         [1, 0, 1, 0, 1], [1, 0, 0, 1, 1], [0, 1, 1, 1, 0], [0, 1, 1, 0, 1],
         [0, 1, 0, 1, 1], [0, 0, 1, 1, 1], [1, 1, 1, 1, 0], [1, 1, 1, 0, 1],
         [1, 1, 0, 1, 1], [1, 0, 1, 1, 1], [0, 1, 1, 1, 1], [1, 1, 1, 1, 1]])

itertools

list(_)
# [(0, 0, 0, 0, 0), (1, 0, 0, 0, 0), (0, 1, 0, 0, 0), (0, 0, 1, 0, 0), (0, 0, 0, 1, 0), (0, 0, 0, 0, 1),
   (1, 1, 0, 0, 0), (1, 0, 1, 0, 0), (1, 0, 0, 1, 0), (1, 0, 0, 0, 1), (0, 1, 1, 0, 0), (0, 1, 0, 1, 0),
   (0, 1, 0, 0, 1), (0, 0, 1, 1, 0), (0, 0, 1, 0, 1), (0, 0, 0, 1, 1), (1, 1, 1, 0, 0), (1, 1, 0, 1, 0),
   (1, 1, 0, 0, 1), (1, 0, 1, 1, 0), (1, 0, 1, 0, 1), (1, 0, 0, 1, 1), (0, 1, 1, 1, 0), (0, 1, 1, 0, 1),
   (0, 1, 0, 1, 1), (0, 0, 1, 1, 1), (1, 1, 1, 1, 0), (1, 1, 1, 0, 1), (1, 1, 0, 1, 1), (1, 0, 1, 1, 1),
   (0, 1, 1, 1, 1), (1, 1, 1, 1, 1)]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在JAVA中获得0和1位的所有可能排列

来自分类Dev

如何在JAVA中获得0和1位的所有可能排列

来自分类Dev

如何递归地找到变量0和1的所有排列(不使用itertools或random)?

来自分类Dev

获取所有数组的排列[1,1,1,1,1,0,0,0,0]

来自分类Dev

python中的list1 [0]和print(list1 [0])有什么区别?

来自分类Dev

如何根据Python中的条件生成0和1矩阵

来自分类Dev

查找给定编号的所有可能排列和组合。使用Python在列表中的元素

来自分类Dev

在Python中使用0和1的所有可能组合制作列表

来自分类Dev

删除Java字符串中的所有字符,“ 0”和“ 1”除外

来自分类Dev

获取列 a 和 b 的排列唯一的所有行

来自分类Dev

如何随机生成具有偶数个 1 或奇数个 0 的 0 和 1 序列?

来自分类Dev

Python中数组中1和0的组合

来自分类Dev

Python中数组中1和0的组合

来自分类Dev

PHP-如何检查字符串是否具有0和1或0或1

来自分类Dev

制作1和0码的所有组合的作品在Java中,但不是在JS

来自分类Dev

如何在python中列出所有可能的排列方式?

来自分类Dev

〜1和〜0在python 3中给出奇怪的结果

来自分类Dev

如果所有行均为0,NA和1,则替换所有0

来自分类Dev

Python生成n个列表的所有n个排列

来自分类Dev

字符串python元素的所有排列

来自分类Dev

在python中结合字典中列表的所有排列

来自分类Dev

确保数组的所有值都编码为1和-1,而不是1和0

来自分类Dev

使用递归查找Python中列表的所有排列

来自分类Dev

使用递归查找Python中列表的所有排列

来自分类Dev

设计一个非ww ^ R形式的所有0和1的字符串的PDA

来自分类Dev

生成只有0和1的NxN矩阵

来自分类Dev

如何使用python从文本文件中提取所有-1和1

来自分类Dev

Python 0和1的随机数组

来自分类Dev

Python BeautifulSoup按索引对td标签进行排序,[0]和[2]有效,但[1]不起作用

Related 相关文章

  1. 1

    如何在JAVA中获得0和1位的所有可能排列

  2. 2

    如何在JAVA中获得0和1位的所有可能排列

  3. 3

    如何递归地找到变量0和1的所有排列(不使用itertools或random)?

  4. 4

    获取所有数组的排列[1,1,1,1,1,0,0,0,0]

  5. 5

    python中的list1 [0]和print(list1 [0])有什么区别?

  6. 6

    如何根据Python中的条件生成0和1矩阵

  7. 7

    查找给定编号的所有可能排列和组合。使用Python在列表中的元素

  8. 8

    在Python中使用0和1的所有可能组合制作列表

  9. 9

    删除Java字符串中的所有字符,“ 0”和“ 1”除外

  10. 10

    获取列 a 和 b 的排列唯一的所有行

  11. 11

    如何随机生成具有偶数个 1 或奇数个 0 的 0 和 1 序列?

  12. 12

    Python中数组中1和0的组合

  13. 13

    Python中数组中1和0的组合

  14. 14

    PHP-如何检查字符串是否具有0和1或0或1

  15. 15

    制作1和0码的所有组合的作品在Java中,但不是在JS

  16. 16

    如何在python中列出所有可能的排列方式?

  17. 17

    〜1和〜0在python 3中给出奇怪的结果

  18. 18

    如果所有行均为0,NA和1,则替换所有0

  19. 19

    Python生成n个列表的所有n个排列

  20. 20

    字符串python元素的所有排列

  21. 21

    在python中结合字典中列表的所有排列

  22. 22

    确保数组的所有值都编码为1和-1,而不是1和0

  23. 23

    使用递归查找Python中列表的所有排列

  24. 24

    使用递归查找Python中列表的所有排列

  25. 25

    设计一个非ww ^ R形式的所有0和1的字符串的PDA

  26. 26

    生成只有0和1的NxN矩阵

  27. 27

    如何使用python从文本文件中提取所有-1和1

  28. 28

    Python 0和1的随机数组

  29. 29

    Python BeautifulSoup按索引对td标签进行排序,[0]和[2]有效,但[1]不起作用

热门标签

归档