2009-10-15 5 views
0

리스트를 반복하고 목록의 각 부분을 가져 와서 인코딩하고 결과가 모두 끝나면 결과를 결합하려고한다. 예를 들어, 각 요소의 길이가 16자인 목록을 생성하는 문자열이 있습니다.파이썬에서리스트를 반복하기.

message = (u'sixteen-letters.sixteen-letters.sixteen-letters.sixteen-letters.') 
result = split16(message, 16) 
msg = ';'.join(encode(result.pop(0)) for i in result) 

encode 함수는 16 바이트 문자열을 사용하여 결과를 반환합니다. 그러나 그것은 쓰여지는 방식으로 목록의 요소 중 절반 만 인코딩합니다.

내가 이해하려고하면 :

result = [encode(split16(message, 16) for message in list_of_messages)] 
result = ''.join(result) 

그것은 전체 목록에 결과를 한 번에 전송되고 있습니다. 내가해야할 일은 각 요소를 encode 함수에 개별적으로 보내고 결과를 얻어서 함께 결합하는 것입니다.

쉬운 방법이 있나요?

+0

목록 이해는 – SilentGhost

+0

감사 SilentGhost 문법적으로 잘못된 코드를 테스트하고 완벽하게 작동합니다. – rescue

+0

@rescue : 자신의 질문에 대해 언급하지 마십시오. 질문을 수정하여 올바른 코드를 작성하십시오. –

답변

1

이와 비슷한 작업을하려고하십니까?

';'.join(encode(i) for i in message.split('.')) 

물론 그것은 당신의 split16 기능이 충분히 복잡 단지

';'.join(encode(i) for i in result) 

경우 일 수 있습니다.

0
당신이 후에 무엇인지 아주 명확하지 않다

하지만

msg=";".join(map(encode,(message[i:i+16] for i in range(0,len(message),16)))) 
1

난 당신이 정확하게 당신이 게시 코드에서 누락 된 괄호에 의해 혼합되어, 무엇을하려고에 대해 조금 혼란 스러워요 :

result = [encode(split16(message, 16) for message in list_of_messages] 

은 다음과 같아야합니다

result = [encode(split16(message, 16) for message in list_of_messages)] 

나 :

result = [encode(split16(message, 16)) for message in list_of_messages] 

나는 두 번째로 원하는대로 할 것이라고 생각합니다.

이 코드 :

msg = ';'.join(encode(result.pop(0)) for i in result) 

result을 반복하는 모든 단계에 있기 때문에 실패하지만, pop와 모든 단계에서 그것을 단축된다. 그냥해야한다 :

msg = ';'.join(encode(i) for i in result)