2016-12-05 1 views
0

목록을 실행하고 모든 값을 특정 문자열로 이전 값으로 결합하려면 루프를 수행해야합니다. 나는 부분적으로 일을 끝내는 다음과 같은 것을 가지고있다. 이것은 넣어되면같은 항목으로 목록 시작하기

thing = ["abc","bde","bdf","bdg","bei"] 

for i in thing: 
    if "bd" in i: 
     value = thing.index(i) 
     thing[value-1]=thing[value-1]+thing[value] 
     del thing[value] 

print thing 

, 내가 얻을 :

['abcbde', 'bdfbdg', 'bei'] 

원하는 결과는 다음과 같습니다

['abcbdebdfbdg', 'bei'] 

편집 : 고정 들여 쓰기

+2

안녕하세요. Nick, 안녕하세요. 코드 예제에서 들여 쓰기를 수정 해 주시겠습니까? 그 의미는 유효하지 않은 파이썬 코드이고 들여 쓰기 _may_는 문제를 해결하는 데 중요한 역할을합니다. –

+1

또한 요소를 변경하는 동안 목록에서 반복하면 문제가 발생할 수 있습니다. –

+0

죄송합니다. 질문을 작성하는 중 실수였습니다. 결정된. –

답변

0

다른 제안으로 나는 것 예기치 않은 결과가 발생할 수 있으므로 반복 할 때 thing을 변경하지 않는 것이 좋습니다. 이 시도 :

thing=['abc', 'bde', 'bdf', 'bdg', 'bei'] 
output=[thing[0]] # initiate output to ['abc'] 
for i in thing[1:]: #['bde', 'bdf', 'bdg', 'bei'] 
    if 'bd' in i: 
     output[-1]=output[-1]+i 
    else: 
     output.append(i) 

print(output) 
#['abcbdebdfbdg', 'bei'] 

시작을 당신이 축적 output의 요소를 가질 수 있도록 'bde'에서 반복. 그런 다음 [-1] 스플 라이스를 사용하여 output의 마지막 요소를 가져오고 'bd'이 현재 반복에 추가되면 추가합니다.

thing을 비우려면 .pop 목록을 사용하는 것이 좋습니다. 루프 끝에서 그런 식으로 thing=[].

관련 문제