0

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

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

li = ["Hello", "Day"]

你做了一个特定的动作。

如果列表中有整数:

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

你做了别的动作

如果有布尔值

li=[False]

做一些其他的动作。

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

4

2 回答 2

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 中,列表的每个元素都可以有不同的类型,并且您也可以面对一个空列表(一个根本没有元素的列表)。

于 2013-10-31T15:58:16.783 回答
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
于 2013-10-31T16:12:52.540 回答