리스트의 원소를 랜덤으로 섞는 방법
조회수 21336회
발생하는 문제 및 실행환경
객체를 저장하는 list를 마구 섞고 싶습니다.
random.shuffle
은 이유는 모르겠는데 자꾸 None
이 return되서 못씁니다.
아마 list안에 int 같은 일반 타입이 아니라 객체가 들어가서 그런것 같은데요,
random.shuffle
말고 다른 방법으로 리스트 원소를 섞을 수 있는 방법 없을까요?
소스 코드
import random
class a:
foo = "bar"
a1 = a()
a2 = a()
b = [a1,a2]
print random.shuffle(b)#None
1 답변
-
random.shuffle은 리스트의 원소가 유저가 정의한 클래스의 객체여도 쓸수 있습니다. 이 경우는
print
할 때 잘못한 경우입니다.shuffle
은 섞고 난 결과가 아니라None
을 return하기 때문에print random.shuffle(b)
하면 당연히None
을 출력합니다.정상적으로 출력하려면
import random class a: foo = "bar" a1 = a() a2 = a() b = [a1,a2] random.shuffle(b) for i in b: print i.foo
댓글 입력