Почему при 1 варианте код работает как мне нужно, а во втором возвращает None?
from random import *
l=[8,6,8,566,'»']
#1 вариант
shuffle(l)
print(l)
#2 вариант
print(shuffle(l))
Ответы (2 шт):
Автор решения: Пушистик
→ Ссылка
Потому, что функция shuffle просто перемешивает значения списка, но не возвращает его. Пользуйтесь первым вариантом.
Автор решения: CrazyElf
→ Ссылка
Как уже объяснили, shuffle возвращает None. Но если очень хочется написать код в одну строчку можно использовать например такой трюк:
print(shuffle(l) or l)
None в логическом выражении будет считаться как False, поэтому значением выражения shuffle(l) or l будет часть после or, то есть l, причём взято оно будет уже после выполнения вызова shuffle(l). Таким образом можно в одной конструкции и вызвать shuffle(l) и получить значение l для печати.