2017-12-31 297 views
0

model = [random.randint(0,1) if model.count(0) < 20 else 1 for _ in range(40)]우아한 임의 0의 목록을 작성하는 방법 물론 <code>model.count(0)</code>의 1

은 잘못된 것입니다. 여기에 올바른 코드가 있지만 목록 이해가 없습니다.

model = list() 
for i in range(40): 
    if model.count(0) < 20: 
     model.append(random.randint(0,1)) 
    else: 
     model.append(1) 

나는 단지 NLP와 거물로 작업하기가 더 쉽습니다. 따라서 새로운 기능을 찾는 것이 좋습니다.

답변

1

목록 이해도은 좋지만 모든 시나리오에 적합하지 않습니다. 귀하의 경우에는 명시적인 for 루프를 작성하는 것이 더 적합합니다.

그러나 유사한 결과를보다 효율적으로 얻으려면 random.shuffle을 사용할 수 있습니다. 당신이 결과 목록의 수에 20로 모두 01이 필요하면, 당신은 할 수 있습니다 :

>>> import random 
>>> my_list = [0]*20 + [1]*20 

>>> random.shuffle(my_list) 
>>> my_list 
[0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0] 

당신이 0의 카운트가 현재 코드가하고있는 0-20 (사이 무작위되고 싶어하지만 경우

>>> zero_count = random.randint(0, 20) 
>>> one_count = 40 - zero_count 

>>> my_list = [0]*zero_count + [1]*one_count 
>>> random.shuffle(my_list) 
>>> my_list 
[1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1] 
+0

쿨,하지만 난 범위 (20 제로의 임의의 숫자를 필요로)하지만 셔플과 나는 항상 20 0과 1 20 것들 : 목록에 포함해야합니다 그래서 가지고 :), 당신은 조금 같은 위의 논리를 수정할 수 있습니다 0에서 20까지의 0과 나머지 것들 –

+0

최근에 추가 한 두 번째 코드 스 니펫을 확인하십시오 @DanielFedrain은 동일한 sc enario –

+1

지원에 감사드립니다! –