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

조회수 21326회

발생하는 문제 및 실행환경

객체를 저장하는 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 답변

  • 좋아요

    2

    싫어요
    채택 취소하기

    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
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)