리스트 에서 인덱스를 두개 추출할 수 있나요(for 이용해서..)

조회수 434회

지수영철희를 조합해서, 이름을 뽑아내(예> 지희, 수철, 영수 등)려고 했습니다. 그래서 원하는 결과값은

지희 40 150

수철 50 200

영수 45 190

.... 이렇게 얻고 싶었습니다 리스트 안의 요소를 두가지를 뽑을 수 있을까요? for i, j in hanguls를 하고 싶었습니다 그게 안되서 아래처럼 머리 굴렸는데 또 오류가 뜨네요.


import random
hanguls = list("지수영철희")
for i in hanguls:
    for j in hanguls.remove(i):
        name = i+j
        weight = random.randrange(40,100)
        height = random.randrange(140,200)

        print("{} {} {} \n".format(name, weight, height))

아래는 오류 내용입니다.

Traceback (most recent call last):
  File "C:\Users\Taewook Kim\Desktop\Programming\PracticePython\practice.py", line 4, in <module>
    for j in hanguls.remove(i):
TypeError: 'NoneType' object is not iterable

2 답변

  • 이러면 될 것 같습니다.

    import random
    
    hanguls = '지수영철희'
    a = []
    for i in range(len(hanguls)):
        while 1:
            c = random.randrange(0, len(hanguls))
            if c != i:
                break
        name = hanguls[i] + hanguls[c]
        weight = random.randrange(40, 100)
        height = random.randrange(140, 200)
        print("{} {} {}\n".format(name, weight, height))
    
    >> 지철 95 159
    
    수지 64 188
    
    영지 66 164
    
    철수 43 159
    
    희철 50 145
    
    • 감사합니다 명료하네요.! 더 열심히 공부하겠습니다 알 수 없는 사용자 2021.3.17 12:47
    • 이름 추출 방식을 약간 변경했으니 확인해주세요. 초보자 2021.3.17 12:48
  • itertools 의 permutations 를 사용하면 됩니다.

    >>> h = list("지수영철희")
    >>> from itertools import permutations
    >>> names = list(permutations(h, 2))
    >>> names
    [('지', '수'), ('지', '영'), ('지', '철'), ('지', '희'), ('수', '지'), ('수', '영'), ('수', '철'), ('수', '희'), ('영', '지'), ('영', '수'), ('영', '철'), ('영', '희'), ('철', '지'), ('철', '수'), ('철', '영'), ('철', '희'), ('희', '지'), ('희', '수'), ('희', '영'), ('희', '철')]
    >>> names = [ ''.join(e) for e in permutations(h, 2) ]
    >>> names
    ['지수', '지영', '지철', '지희', '수지', '수영', '수철', '수희', '영지', '영수', '영철', '영희', '철지', '철수', '철영', '철희', '희지', '희수', '희영', '희철']
    >>> 
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)