我在Python中有一个方法,我只想接受列出的或整数的整数,我该如何定义它?
def autoInt(integers):
assert int(integers)
assert len(integers) > 0
这失败了,因为我没有列表。我确定这很简单。
TypeError:int()参数必须是字符串或数字,而不是' list'
编辑:我的任务是这个方法只能接受列表中的整数。
答案 0 :(得分:2)
这取决于您的定义以整数形式传递的内容。例如,bool
的实例是否计数?是浮动1.0
?
无论如何 - 你可以将all
内置函数与生成器表达式结合起来。
>>> a = [1,2,True]
>>> all(isinstance(x, int) for x in a)
True
>>> all(type(x) == int for x in a)
False
作为旁注:严格检查参数类型,而不是Python程序员在没有特定原因时所做的事情。更好的方法通常是编写清晰的文档字符串和/或类型提示。
Here是一个解释如何做后者的答案。除此之外,通常还有"垃圾 - >垃圾(或错误)"心态。
答案 1 :(得分:1)
您可以测试这样的整数列表:
assert(all(isinstance(item, int) for item in integers))
答案 2 :(得分:0)
>>> my_list = [1, 2, 3.25]
>>> all(isinstance(item, int) for item in my_list)
False
>>> other_list = range(3)
>>> all(isinstance(item, int) for item in other_list)
True
>>>