Python 列表理解 - 生成多个数据

Python list comprehension - generating multiple data

import random

M = 4
N = 3


def generisanjevol1(nekalista, m):
    return random.choices(nekalista, k=m)


def generisanjevol2(nekalista, m,n):
    #obj = [[random.choice(nekalista,k=m)] for i in range(N)]]
    obj = [[random.choice(nekalista)] for i in range(n)]
    return obj

    #def poredjenje()


listaslova = ['A', 'B', 'C', 'D', 'E']

lista = generisanjevol1(listaslova, M)
lista2 = generisanjevol2(listaslova, M, N)
print(lista)
print(lista2)

以上是我的尝试 (generisanjevol2(nekalista, m,n)...

接下来我要做的是: 我想生成 N 个数组并用 random.choice 函数生成的字符串填充它们,它们仍然必须是来自 listaslova)
的字符串 也许假设 N=3(N 代表数组的数量)和 M=4(M 代表数组的长度)我应该得到这样的结果(数组中的数据不必相同,因为它们当然是随机生成的) :

[A,C,D,E]
([A,C,E,D] [E,C,B,A] [E,D,D,A])

但我得到的结果如下:

[A,D,E,C]
[[B],[D],[E]]

P.S 如果我尝试评论的那个,我会得到一个错误

您注释行中的错误是因为您多了一个 ]random.choice 应该是 random.choices.

但是您也不应该在对 random.choice() 的调用周围放置另一个列表。它已经 returns 一个列表。

def generisanjevol2(nekalista, m,n):
    obj = [random.choices(nekalista,k=m) for i in range(n)]
    return obj

就像@Barmar 说的,你确实多了一个[]。 您的函数应如下所示:

def generisanjevol2(nekalista, m,n):
...:     obj = [random.choices(nekalista, k=m) for i in range(n)]
...:     return obj