2013-01-20 2 views
4

저는 파이썬에 매우 익숙합니다. 특정 범위의 정수 문자열을 섞어서 그 범위 내에서 각 정수를 입력 할 필요없이 프로그램을 실행하고 싶습니다. 즉, 입력하지 않고 정수 b/w 1-100의 목록을 무작위로 지정하려고합니다 (1, 2, 3 ... 100).특정 범위 내에서 목록 섞기 python

예, 비슷한 질문에 대한 다른 답변을 살펴 보았지만 모두 특정 범위 내의 정수 하나를 요구하거나 Python에 대해 대답하지 않았거나 더 복잡한 방법을 요구하고 있습니다. 감사합니다

답변

11

range()을 사용하여 정수 목록을 생성 한 다음 해당 목록에 random.shuffle()을 적용 할 수 있습니다. range()

In [141]: lis = range(1,11) 

In [142]: lis 
Out[142]: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

In [143]: random.shuffle(lis) 

In [144]: lis 
Out[144]: [1, 4, 3, 10, 8, 2, 6, 9, 5, 7] 

help() :

범위 ([시작] 중지 [단계]) -> 정수

복귀 정수의 등차 수열을 포함하는 목록

목록. 범위 (i, j)는 [i, i + 1, i + 2, ..., j-1]을 반환합니다. start (!)의 기본값은 0입니다. step이 지정되면 증가 (또는 감소)를 지정합니다. 예제의 경우 range (4)는 [0, 1, 2, 3]을 반환합니다. 종점은 생략되었습니다! 이것은 정확히 4 개의 요소 목록에 대한 유효한 색인입니다. @Ashwini 당신이 인구의 부분 집합에 관심이있는 경우 random.shuffle

을 사용할 수 있습니다 제안으로

경우
+0

그리고 내가 이미 목록이있는 경우에 사용할 수 있습니다 xrange

  • 동일한 코드를 사용하지만, 단지 하위 목록을 셔플 할 수 있습니까? 나는 그것이 원래의 질문이라고 생각한다. – user2061057

  • +1

    @ user2061057 다음과 같이하십시오 :'sublist = lis [5:10]; random.shuffle (sublist); lis [5:10] = sublist'. –

    5

    당신은 주어진 범위 내에서 전체 인구를 원하는, 당신은 random.sample

    를 사용하는 기대할 수
    >>> random.sample(range(1,10),5) 
    [3, 5, 2, 6, 7] 
    
    또한 시뮬레이션이를 사용할 수 있습니다

    random.shuffle

    >>> random.sample(range(1,10),(10 - 1)) 
    [4, 5, 9, 3, 2, 8, 6, 1, 7] 
    

    참고, random.shuffle 이상 random.sample 사용의 장점은, 반복자 작업 당신이 돈

    • 파이썬 3.X에 있도록 할 수있다; t이 목록에 range()을 변환 할 필요가
    • 파이썬 2, X에서는 파이썬 2.x 및 3.x