使用if语句列表

时间:2013-10-31 15:53:37

标签: list python-3.x

如何告诉我的程序根据字符串中的givin执行某些操作?

例如,如果列表中有字符串:

li = ["Hello", "Day"]

你做了一个特定的行动。

如果列表中有整数:

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

你要采取其他行动

如果有布尔值

li=[False]

做一些其他行动。

我想检查列表的对象类型。

2 个答案:

答案 0 :(得分:1)

您可以使用

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

或者您可以创建单独的函数和调度字典:

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

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

但请注意,在Python中,列表中的每个元素都可以有不同的类型,您也可以面对一个空列表(根本没有元素的列表)。

答案 1 :(得分: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