#python #list #list-comprehension
#python #Список #понимание списка
Вопрос:
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 Если я попробую тот, который прокомментирован, я получу сообщение об ошибке
Ответ №1:
Ошибка в вашей прокомментированной строке связана с тем, что у вас есть дополнительный ]
. И random.choice
должно быть random.choices
.
Но вы также не должны помещать другой список вокруг вызова random.choice()
. Он уже возвращает список.
def generisanjevol2(nekalista, m,n):
obj = [random.choices(nekalista,k=m) for i in range(n)]
return obj
Комментарии:
1. В прокомментированной строке я получаю ошибку с random.choice(некалиста, k = m)… В нем говорится следующее:
TypeError: choice() got an unexpected keyword argument 'k'
2. Это должно быть
random.choices
, как вgenerisanjevol1
3. Путем вызова
random.choices()
generisanjevol2
, как я показал в ответе.4. Вы видели, что я отредактировал ответ после того, как вы опубликовали свой комментарий?
5. Напишите функцию, которая сравнивает списки и возвращает оценку того, насколько они похожи. Затем вы можете использовать
sorted(zip(lista2, lista2), key=lambda pair: yourFunction(*pair))
.
Ответ №2:
Как сказал @Barmar, у вас действительно есть дополнительный []
. Ваша функция должна выглядеть:
def generisanjevol2(nekalista, m,n):
...: obj = [random.choices(nekalista, k=m) for i in range(n)]
...: return obj