我有这个清单:
L= ['p', 2, 3, 1,'T','F', 0,'L','C','H', 1,'C',0]
我该怎么做才能得到只有整数的所有位置,例如: 整数位置是: 1个 2个 3个 6个 10 12
我尝试将列表转换为所有整数
[int(i) for i in L if type(i)== int or i.isdigit()]
然后尝试索引结果,但没有用。
你可以这样做:
L = ['p', 2, 3, 1, 'T', 'F', 0, 'L', 'C', 'H', 1, 'C', 0]
int_positions = [i for i in range(len(L)) if isinstance(L[i], int)]
print("Integer positions are:", " ".join(map(str, int_positions)))
isinstance
函数检查对象是否是特定类或该类的子类的实例,并返回 True 或 False。
您可以使用 isnumeric 与列表理解:
L= ['p', 2, 3, 1,'T','F', 0,'L','C','H', 1,'C',0]
L= [str(i) for i in L]
Final= [c for c,i in enumerate(L) if i.isnumeric()]
print(Final)
输出#
[1, 2, 3, 6, 10, 12]
您可以应用下一个代码片段:
integer_positions = [index for index, value in enumerate(L) if isinstance(value, int)]
print("All integers:", " ".join(str(i) for i in integer_positions))
这里
enumerate()
函数用于循环遍历列表并获取每个元素的索引。然后isinstance()
函数用于检查元素是否为整数。如果是,则将其索引添加到 integer_positions
列表中。最后,整数位置列表被打印为带有 join()
和 str()
的字符串。
i.isdigit() 将不起作用,因为 isdigit() 是一种字符串方法。这会起作用-
[i for i in range(len(L)) if str(L[i]).isdigit]