리스트의 원소를 랜덤으로 섞는 방법


발생하는 문제 및 실행환경

객체를 저장하는 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
  • 2016년 01월 25일에 작성됨

조회수 242


1 답변


좋아요
0
싫어요
채택취소하기

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
  • 2016년 01월 25일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close