2011-01-21 2 views
4

X가 문자열 인 경우 목록을 추가하는 간단한 방법이 있지만 X가 목록 인 경우 확장하는 방법이 있습니까? 나는 객체가 문자열인지리스트인지 간단하게 테스트 할 수 있다는 것을 알고 있지만, 이것보다 더 빠른 방법이 있는지 궁금해하고있다.파이썬은 적절한 경우 목록을 확장하거나 추가합니다.

+3

가장 빠르고 간단한 방법으로 try-except를 사용하는 것하게 연장하여 번째 코드를 작성하는 것이다 에서 나중에 이것을 강요하지 않습니다. – delnan

+0

이 특별한 상황에서는 불가능합니다. 저는 백엔드 시스템에서 X를 상속 받았으며 하나의 객체를 목록 항목으로 전달하지 않습니다. – chrism

+1

"단일 객체를 목록으로 전달하지 않습니다"라고 슬픈 말입니다. 그리고 그것을 합리적인 함수로 감싸거나 추가 메서드로 확장하거나 서브 클래 싱하여 수정할 수 없습니까? –

답변

6

mylist.extend ([X]의 경우 유형 (X) == str을 다른 X)

또는 너무 문자열 이외의 것을 따라 잡을려면 아마 반대가 더 안전 할 것 :

으로 myList를. (x는 다른 타입 (X) == 목록 [X] 경우)

+1

isinstance()를 잊어 버렸습니다. 아마도 type()보다 융통성이 있습니다. – kurosch

+0

두 번째로 사용했는데, 꽤 잘 작동했습니다. ifs를 사용하는 것보다 조금 빠릅니다 - 감사합니다. – chrism

0

저는 그렇게 생각하지 않습니다. extend은 반복문을 입력으로 사용하며, 문자열과리스트는 파이썬에서 iterable입니다.

0
buffer = ["str", [1, 2, 3], 4] 
myList = [] 

for x in buffer: 
    if isinstance(x, str): 
     myList.append(x) 
    elif isinstance(x, list): 
     myList.extend(x) 
    else: 
     print("{} is neither string nor list".format(x)) 

더 나은 방법이 대신 isinstance()