Python 如何检查列表中的所有项目是否为字符串

Python 如何检查列表中的所有项目是否为字符串,python,python-3.x,Python,Python 3.x,如果我在python中有一个列表,是否有函数告诉我列表中的所有项目是否都是字符串 例如: [“一”、“二”、“三]将返回False,[“一”、“二”、“三”]将返回True,只需使用all()并检查是否有isinstance()的类型即可 回答@Tekhenyghomer的后续问题:是否有办法检查列表中是否没有数字字符串。例如:[“一”、“二”、“三”]将返回false 对。您可以将字符串转换为数字,并确保它引发异常: def isfloatstr(x): try: f

如果我在python中有一个列表,是否有函数告诉我列表中的所有项目是否都是字符串

例如:
[“一”、“二”、“三]
将返回
False
[“一”、“二”、“三”]
将返回
True
,只需使用
all()
并检查是否有
isinstance()的类型即可


回答@Tekhenyghomer的后续问题:是否有办法检查列表中是否没有数字字符串。例如:[“一”、“二”、“三”]将返回false

对。您可以将字符串转换为数字,并确保它引发异常:

def isfloatstr(x):
    try: 
        float(x)
        return True
    except ValueError:
        return False

def valid_list(L):
    return all((isinstance(el, str) and not isfloatstr(el)) for el in L)
检查:

>>> valid_list(["one", "two", "3"])
False

>>> valid_list(["one", "two", "3a"])
True

>>> valid_list(["one", "two", 0])
False
[5]中:有效的_列表([“一”、“二”、“三”])
Out[5]:True

还有一个问题,是否有办法检查列表中是否没有数字字符串。例如:[“一”、“二”、“三”]将返回false@TekhenyGhemor-
isinstance(item,str)而不是item.lstrip('-').isdigit()
表示零整数或正整数。如果你想检查浮点数、复数等,它会变得更加复杂。@XamuelSchulman-你的意思是摆脱
all()
和生成器表达式(不是列表理解)并为..else
创建一个传统的
循环吗?或者你的意思是把当前代码分成多行?我看不出这两种方法会有什么帮助。这已经是简洁、清晰和规范的了。这能回答你的问题吗?
>>> valid_list(["one", "two", "3"])
False

>>> valid_list(["one", "two", "3a"])
True

>>> valid_list(["one", "two", 0])
False