2013-10-31 2 views
0

문자열에서 주어진 것에 따라 특정 동작을 수행하도록 내 프로그램에 알리는 방법은 무엇입니까? 목록에 if 문 사용

li = ["Hello", "Day"] 

당신이 특정 작업을 수행

예를 들어 목록에 문자열이있는 경우.

목록에 정수가있는 경우 :

li = [1,2,3,4,3232] 

당신이 someother 행동을

이있는 경우

부울

li=[False] 

을 다른 작업을한다.

목록의 개체 유형을 확인하고 싶습니다.

+0

더 구체적으로 설명해야합니다. 한 목록이 다른 목록과 정확하게 일치하는지 확인하고 있습니까? 또는 목록에있는 유형의 경우? –

+1

질문은 정확히 어디에 있습니까? 객체 유형을 확인하는 방법을 알고 싶습니까? –

+1

목록 내용의 유형별로 동작을 변경하고 싶습니까? –

답변

1

당신은 사용할 수 있습니다

if isinstance(li[0], str): 
    ... 
elif isinstance(li[0], int): 
    ... 
elif isinstance(li[0], bool): 
    ... 

또는 별도의 기능과 디스패치 사전 생성 할 수 있습니다 : 파이썬 그러나 그

funcs[type(li[0])](li) # Will call the specific function 

참고 : 다음

def function_for_str(li): 
    ... process a list of strings ... 

def function_for_int(li): 
    ... process a list of ints ... 

def function_for_bool(li): 
    ... process a list of booleans ... 

funcs = {str: function_for_str, 
     int: function_for_int, 
     bool: function_for_bool} 

및 사용 type을 목록의 각 요소는 다른 유형을 가질 수 있으며 f ace 빈리스트 (엘리먼트가 전혀없는리스트).

0

다음 코드를 구현할 수 있습니다.

for item in my_list: 
    if isinstance(item, int): 
     do_int_related_stuff(item) 
    elif isinstance(item, str): 
     do_str_related_stuff(item) 
    elif isinstance(item, bool): 
     do_bool_related_stuff(item) 
    else: 
     do_generic_stuff(item) 

목록에있는 모든 항목이 특정 유형인지 확인하려면 다음과 같이하십시오.

if all([isinstance(item, str) for item in my_list]): 
    do_str_related_stuff(my_list) 

그러나 빈 목록을 처리하는 경우 후자는 참입니다.

>>> all(isinstance(item, bool) for item in []) 
True