2014-04-27 2 views
0

내 함수 RandList (n)n 요소를 가진 목록을 반환합니다. 그러나, 그것을 실행할 때 그것은 내게 2 * n L의 요소를 제공합니다. 누군가 나를 도울 수 있습니까? 미리 감사드립니다.목록의 무작위 요소 - Python

import random 

def randList(n): 
    counter = 0 
    L =[] 
    while counter < n: 
    L += str(random.randrange(0,100)) 
    counter += 1 
    return L 

print randList(1) 
print randList(5) 
print randList(10) 

답변

2

당신이 L += str(random.randrange(0,100))했다

수정 코드, 파이썬 인터프리터는 str(random.randrange(0,100))는 반복 가능한 것을 깨달았다.

시도 L += [str(random.randrange(0,100))] 또는 L.append(str(random.randrange(0,100)))

최종 코드 :

def randList(n): 
    counter = 0 
    L = [] 
    while counter < n: 
     L += [str(random.randrange(0,100))] 
     counter += 1 
    return L 
2

대신 append를 사용해야합니다

당신은 본질적으로 목록의 별도 요소로 문자열의 모든 문자를 추가 list += string을 수행 할 때. (이 문자열이기 때문에, 모든 문자)는 L에 모든 요소를 ​​추가하므로 ([] + 'hello' --> ['h', 'e', 'l', 'l', 'o'])

import random 

def randList(n): 
    counter = 0 
    L =[] 
    while counter < n: 
     L.append(str(random.randrange(0,100))) 
     counter += 1 
    return L 

print randList(1) 
print randList(5) 
print randList(10) 
+0

들여 쓰기를 수정할 수 있습니까? – Luigi

+0

@ 루이스, 아, 네. 죄송합니다. 끝난. 고맙습니다 – sshashank124

1

항상 비교할 때 (합 ... 곱)주의 비 균일 한 종류.
frostnational 및 sshashank124가 코드가 실패한 이유를 설명했습니다. 이 목록은 문자열을 포함하지 않는

import random 

lr = [random.randrange(0, 101) for i in range(n)] # has repetitions 
lnr = random.sample(range(101), n) # has no repetition 

주,하지만 당신은 쉽게 코드를 조정할 수 있습니다
여기 (사용 사례에 따라)이 개 짧은 솔루션입니다.
또한 lr은 list comprehension입니다.