如何告诉我的程序根据字符串中给出的内容执行某些操作?
例如,如果列表中有字符串:
li = ["Hello", "Day"]
你做了一个特定的动作。
如果列表中有整数:
li = [1,2,3,4,3232]
你做了别的动作
如果有布尔值
li=[False]
做一些其他的动作。
我想检查列表的对象类型。
如何告诉我的程序根据字符串中给出的内容执行某些操作?
例如,如果列表中有字符串:
li = ["Hello", "Day"]
你做了一个特定的动作。
如果列表中有整数:
li = [1,2,3,4,3232]
你做了别的动作
如果有布尔值
li=[False]
做一些其他的动作。
我想检查列表的对象类型。
你可以使用
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 中,列表的每个元素都可以有不同的类型,并且您也可以面对一个空列表(一个根本没有元素的列表)。
您可以尝试实现以下代码。
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