我有这个列表:
L= ['p', 2, 3, 1,'T','F', 0,'L','C','H', 1,'C',0]
我怎么做才能得到整数的所有位置,例如:整数位置为:123.61012
我尝试将列表转换为全int with[int(i) for i in L if type(i)== int or i.isdigit()]
然后尝试索引结果,但没有成功。
您可以应用下一个代码片段:
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()
的字符串。
你可以这样做:
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。
列举列表并按如下方式检查数据类型:
L= ['p', 2, 3, 1,'T','F', 0,'L','C','H', 1,'C',0]
print(*(i for i, n in enumerate(L) if isinstance(n, int)))
输出:
1 2 3 6 10 12
i.isdigit()
不能工作,因为isdigit()
是字符串的方法。
[i for i in range(len(L)) if str(L[i]).isdigit]
您可以将所有内容类型转换为str
,然后使用列表推导式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]