Как мне поместить этот код в одну функцию печати (или строку)?

#python #random

#python #Случайный

Вопрос:

Итак, я хочу превратить этот код в одну строку. Я понятия не имею, как создать два случайных списка, а затем распечатать общие числа, которые находятся в двух списках, в пределах одной строки. Я новичок в том, чтобы помещать код в одну строку, и я понятия не имею, возможно ли это.

Вот код, который у меня есть:

 import random
a, b = random.sample(range(1, 50), 30), random.sample(range(1, 50), 30)

print([x for x in a for y in b if x == y])
 

И вот моя попытка в этом:

 import random
print([[a = random.sample(range(1, 50), 30)], [b = random.sample(range(1, 50), 30)], x for x in a for y in b if x == y])
 

Комментарии:

1. Проблема, безусловно, кажется решенной, пожалуйста, отметьте любой из правильных ответов как принятый.

Ответ №1:

Просто вставьте определения, поскольку нет необходимости в переменной:

 import random
print([x for x in random.sample(range(1, 50), 30) for y in random.sample(range(1, 50), 30) if x == y])
 

Вы также можете заменить random на __import__("random") , а затем избавиться import random от в первой строке, если вам нужна настоящая однострочная строка.

Комментарии:

1. Большое спасибо. Это так логично.

Ответ №2:

С помощью наборов:

 >>> import random
>>> {*random.sample(range(1, 50), 30)}.intersection({*random.sample(range(1, 50), 30)})