2013-07-23 3 views
2

나는 학교에서 두 번째 과제를 진행하고 있으며 프로그래밍에 익숙하지 않다. 우리는 파이썬으로 목록을 덮고있는 중이고 약간 문제가 있습니다. 우리는 목록을 사용하여 물고기 게임을 만들고 있습니다. 그리고 캐릭터 중 일부를 목록이나 새로운 문자열로 변환해야합니다. 선호하는 문자열은 다른 문자열에 연결해야하기 때문입니다.목록의 특정 문자를 문자열로 바꿈

우리는 pHands[0] = [ac,4c,2h,jd,ad] 같은 것을 찾고, 각 플레이어의 카드를 나타내는 목록의 목록을 가지고 있고, 나는이 목록에 캐릭터 라인을 연결 할 수 없다는 오류를 일으키는 "a 4 2 j a"

def MyCards (pHands,player_number): 

    card_list = [] 
    for i in range(len(pHands[0])): 
     card_list = card_list + (pHands[0][i][0]) 
    return card_list 

로 그것을 돌 필요 , 그리고 나는 join 함수에 익숙하지 않다. 어떤 도움을 많이 주시면 감사하겠습니다! 정말 고맙습니다!

+0

당신이 목록'[ 'A', 4로 돌려해야합니까, 2, 'J', ' a ']'또는 문자열''a 4 2 ja "'? – blablatros

답변

3

card_list.append(pHands[0][i][0])을 사용하십시오.

+은 양쪽에있는 요소가 목록 일 때만이 컨텍스트에서 작동합니다. 그래서 당신은 할 수 있습니다 : 그것은 (1) 새 임시 목록 개체를 할당하고, (2) 기존의 것을 수정하는 대신 새 목록 객체를 반환으로

card_list = card_list + [pHands[0][i][0]] 

그러나이 낭비 될 것이다.

+0

초보자 친화적 인 답을위한 +1,이 단계에서 OP를 혼동시키는 목록 이해력 대신. – blablatros

+0

사실 나는 @blablatros에 동의합니다 - 두 번째 과제 및 목록 이해 o-O – karthikr

3

더 좋은 방법은 cdhowie의 대답에 따라 코드를 해결하기 위해

def MyCards (pHands, player_number): 
    return [item[0] for item in pHands[0]] 

그리고 물론 기본적으로 그래서 list comprehensions

card_list = [item[0] for item in pHands[0]] 

을 사용하는 것입니다.

+0

아니면 그렇게 할 수 있습니다. :) – cdhowie

+0

이것은 완벽합니다! 고마워요 –

+0

좋아요. 가장 유용한 것으로 표시된 답변을 [수락] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)로 표시하십시오. – karthikr

0

사용 지능형리스트가 :

>>> pHands = ['ac','4c','2h','jd','ad'] 
>>> " ".join([i[0] for i in pHands]) 
'a 4 2 j a' 

문자열의 방법은 단순히 문자열로 목록으로 반복 가능한 요소를 결합 가입, 지능형리스트는 파이썬의리스트를 itering의 효과적이고 재미있는 방법입니다.

0

map은 두 번째 인수로 iterable을 취하고 각 요소에 첫 번째로 적용 할 함수를 취합니다.

문자열 함수 .join()은 iterable을 인수로 취해서 호출 된 문자열을 사용하여 요소를 결합합니다.

마지막으로 카드 소송은 10 점까지 올라가므로 0 지수를 얻으려는 모든 해결책은 10으로 나뉘며 1을 잘못 반환합니다. 첫 번째 문자에서 두 번째 마지막 문자로 인덱싱하면 "10c"[0 : -1] == "10".

" ".join( 
    map(lambda i: i[0:-1], ["ac","4c","2h","jd","ad"]) 
) 
0

목록과 비 목록을 연결하려고 시도하여 오류가 발생했습니다.

이렇게하는 방법에는 여러 가지가 있습니다.

Oneliner :

자신의 코드를 편집하려면 def MyCards (pHands,player_number): return [i[0] for i in pHands[0]] :

def MyCards (pHands,player_number): 
    card_list = [] 
    for i in range(len(pHands[0])): 
     card_list.append(pHands[0][i][0]) 
     # remeber don't use concatenation here. i.e. card_list = card_list + [pHands[0][i][0]] 
     # because it creates a new list and assign it to card_list and that is bad for space. 
    return card_list 
관련 문제