【问题标题】:permutation of elements inside the list of list列表列表中元素的排列
【发布时间】:2017-04-16 20:48:28
【问题描述】:

我有一个嵌套列表如下:

A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

我只需要置换每个列表中的元素。

你知道我该怎么做吗?

【问题讨论】:

  • 所以你只想打乱每个子列表?
  • 显示预期输出

标签: python list nested permutation


【解决方案1】:

你可以这样做:

import random
A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

for x in A:
    random.shuffle(x)

【讨论】:

  • 谢谢。这对我很有帮助。
【解决方案2】:

要打乱列表理解中的每个子列表,您不能使用random.shuffle,因为它可以正常工作。您可以将random.sample 与样本长度 = 列表长度一起使用:

import random

A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

new_a = [random.sample(l,len(l)) for l in A]

print(new_a)

输出:

[[2, 1, 3], [5, 4, 6], [7, 9, 8]]

如果您不想修改原始列表,该解决方案是最好的解决方案。否则,在循环中使用shuffle 作为其他人的回答也可以。

【讨论】:

    【解决方案3】:

    使用来自 itertools 的排列:

    from itertools import permutations
    A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    out = []
    for i in A:
      for j in permutations(i):
        out.append(list(j))
    
    print out
    

    输出:

    [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1],
     [4, 5, 6], [4, 6, 5], [5, 4, 6], [5, 6, 4], [6, 4, 5], [6, 5, 4],
     [7, 8, 9], [7, 9, 8], [8, 7, 9], [8, 9, 7], [9, 7, 8], [9, 8, 7]]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-07
      • 2018-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-02
      • 1970-01-01
      • 2016-01-20
      相关资源
      最近更新 更多