例如,该列表包含:
例子:
["string1", 34, True, "string2", [2,4,6]]
问题:如何在列表中找到这两个字符串的索引?(列表中的对象类型必须视为未知)
用途isinstance()
:
my_list = [True, 10.8, [1,2,3], False, True, "Hello", 12, "Sbioer", 2.5]
for i, item in enumerate(my_list):
if isinstance(item, basestring):
print i
输出:
5
7
但是,如果要检查int
值,则也会获得bool型项目的索引,因为(引用其他来源的文本):
如果将布尔类型添加到python时(大约在2.2或2.3左右),那么这是完全合乎逻辑的。
在引入实际布尔类型之前,0和1是真值的正式表示形式,类似于C89。为避免不必要地破坏非理想但有效的代码,新的布尔类型必须像0和1一样工作。这不仅限于真值,还包括所有积分运算。没有人会建议在数字上下文中使用布尔结果,也没有大多数人会建议测试相等性以确定真值,没有人想找出这种方式来确定现有代码的难度。因此,决定将True和False假装分别设为1和0。这仅仅是语言进化的历史产物。
因此,如果您只想检查int
值:
my_list = [True, 10.8, [1,2,3], False, True, "Hello", 12, "Sbioer", 2.5]
for i, item in enumerate(my_list):
if isinstance(item, int) and not isinstance(item, bool):
print i
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句