2013-01-23 1 views
1

에 새로운 문자열을 추가 :파이썬 방법 -으로 반복 배열은 인덱스 요소에 대한 확인 나는 다음과 같은 달성하기 위해 노력하고있어 배열

symbols = ['aol', 'goog', ...] 
    (symbols.append('$'+val) if '$' != val[0] for val in symbols) 

: 같은

Iterate a list 
    if an element (string) does not have a '$' at the first position 
     apply a '$' and append the new value to the array 

내가 노력하고있어 뭔가를 하지만 구문 오류가 발생합니다. 도움을 주시면 감사하겠습니다. str.startswith() 사용

+0

[list comprehensions] (http://www.youtube.com/watch?v=pShL9DCSIUw)의 작동 방식을 확인해야합니다. –

+0

안녕하세요 - 확인해 주셔서 감사합니다. 나는 그것을보고 다시 시도 할 것이다. –

+0

@ s.bandara 정말 좋은 태그가 아닙니다. (파이썬은 파이썬의 태그 동의어입니다.) 가치있는 일을하기에 충분한 사용법을 보지 못할 것이라고 생각합니다. –

답변

2

목록의 얕은 사본 반복 처리 $ 확인 :

In [81]: symbols = ['aol', 'goog','$foo','bar'] 

In [82]: for x in symbols[:]: 
    if not x.startswith('$'): 
     symbols.append('$'+x) 
    ....:   

In [83]: symbols 
Out[83]: ['aol', 'goog', '$foo', 'bar', '$aol', '$goog', '$bar'] 
1

애쉬 위니 제안과 같이 할 수 있습니다 아니면 그냥 목록을 이해하고 기존 목록

symbols + [('' if e.startswith('$') else '$') + e for e in symbols] 
에 추가 할 수 있습니다

Ashwini가 제안한 것을 수행하지만, 기존 목록에 추가하는 대신 새 목록 (비교적 빠름)을 포함하고 기존 목록에 추가합니다.

0
symbols.extend('$' + s for s in symbols if s[:1] != '$') 

이 다른 사람이 게시 한 것과 유사하지만, 대신에 'startswith'의 편의상 (빈 문자열 승/기능) 조각을 이용하고 암시하는 표시되는 내용을 준수하기 위해 원래 목록에 추가 원래의 문제 문 - 문제 문은 혼란스럽게 '목록'과 '배열'을 혼용하여 사용하지만.

관련 문제