입력으로 문자열 목록을 수신하고 동일한 문자열이 있지만 무작위 순서로 목록을 반환해야합니다. 중복을 허용해야합니다. 동일한 문자열이 입력에 한 번 이상 나타날 수 있으며 출력에 동일한 횟수가 나타나야합니다.
나는 여러 가지 “무력한”방법 (루프 사용, 신은 금지)을 봅니다. 그중 하나는 현재 사용하고 있습니다. 그러나 Python을 알면 아마도 멋진 한 줄짜리가있을 것입니다.
답변
>>> import random
>>> x = [1, 2, 3, 4, 3, 4]
>>> random.shuffle(x)
>>> x
[4, 4, 3, 1, 2, 3]
>>> random.shuffle(x)
>>> x
[3, 4, 2, 1, 3, 4]
답변
이것이 가장 무작위가 아니라면 가장 간단한 방법 인 것 같습니다 ( 이 질문 은 제한 사항을 더 자세히 설명합니다) : http://docs.python.org/library/random.html#random.shuffle
답변
item 문자열이 주어지면 다음은 한 줄짜리입니다.
''.join([str(w) for w in random.sample(item, len(item))])
답변
문자열을 배열로 읽은 다음 셔플 링 알고리즘을 사용해야합니다. Fisher-Yates 셔플을 권장합니다.
답변
import random
b = []
a = int(input(print("How many items you want to shuffle? ")))
for i in range(0, a):
n = input('Please enter a item: ')
b.append(n)
random.shuffle(b)
print(b)
답변
파이썬 3.8에서는 해마를 사용하여 몇 줄로 밀어 넣을 수 있습니다. 먼저 문자열에서 목록을 만들어 변수에 저장해야합니다. 그런 다음 무작위를 사용하여 섞을 수 있습니다. 그런 다음 목록을 다시 문자열로 결합하십시오.
random.shuffle(x := list("abcdefghijklmnopqrstuvwxyz"))
x = "".join(x)