정수 목록이 있습니다. l = [1,2,3,4]
이 목록의 각 요소에 대해 다른 요소 를 무작위로 선택 하고 이에 대해 몇 가지 작업을 수행해야합니다.
for i in range(len(l)):
idx = # a random index which is NOT equal to i
# do something with the element at idx
나는 여전히 파이썬에 익숙하지 않으며 무작위 인덱스를 생성하고 난수가 같지 않은 경우에만 루프를 중지하는 루프에 의존하지 않고 이것을 수행하는 방법이 있는지 확인할 수 없습니다 i
. 어떤 제안이라도 대단히 감사하겠습니다.
방법 : 1 0
과 N - 1
( N
이 경우 목록의 길이) 사이의 임의의 숫자를 생성 한 다음이 숫자보다 크거나 같으면 해당 숫자에 1을 추가 i
합니다.
for i in range(len(l)):
idx = random.randrange(len(l) - 1)
idx = idx + 1 if idx >= i else idx
# do stuff with idx
이렇게하면 위에 i
있는 모든 숫자 가 "하나 위로"이동됩니다.
0 i N
before *****************
after ******* **********
또는 한 줄에서 1 i + 1
과 사이의 숫자를 생성하고 N + i
해당 숫자를 modulo N
하여 목록 끝 뒤에서 효과적으로 래핑 할 수 있습니다.
idx = random.randrange(i + 1, len(l) + i) % len(l)
0 i N
before *****************
after ******* **********
1) 여기서는 하한을 포함하고 상한을 제외한 것을 의미합니다.randrange
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다