Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在数组中查找非字符串索引_Python_Python 3.x_String_Integer_Indices - Fatal编程技术网

Python 如何在数组中查找非字符串索引

Python 如何在数组中查找非字符串索引,python,python-3.x,string,integer,indices,Python,Python 3.x,String,Integer,Indices,有一个类似于 a = ['string', '1', '2', 'string2', '4', 'string5', '5' ...] 我怎样才能找到像这样的非字符串索引 [1,2,4,6 ...] 如果我使用 isinstance(a, str) 如果您的列表包含整数和字符串,则可以使用: 或者,根据@MushifAliNawaz的评论使用枚举: In [874]: ans = [c for c,i in enumerate(a) if i.isnumeric()] In [875]:

有一个类似于

a = ['string', '1', '2', 'string2', '4', 'string5', '5' ...]
我怎样才能找到像这样的非字符串索引

[1,2,4,6 ...]
如果我使用

isinstance(a, str)

如果您的
列表
包含
整数
和字符串,则可以使用:

或者,根据@MushifAliNawaz的评论使用
枚举

In [874]: ans = [c for c,i in enumerate(a) if i.isnumeric()]

In [875]: ans
Out[875]: [1, 2, 4, 6]

您应该使用
循环
并检查数组中的每个元素:

>>> a = ['string', '1', '2', 'string1', '3', 'string2', '3.0', '2.5']
>>> results = []
>>> for v in a:
...     try:
...             value = int(v)
...     except ValueError:
...             try:
...                     value = float(v)
...             except ValueError:
...                     continue
...     results.append(value)
...
>>> results
[1, 2, 3, 3.0, 2.5]

不是downvoter,但可能是downvoter,因为这种方法效率很低,并且不能根据需要创建新列表。OP的列表包含数字作为字符串。尽管循环是这里的关键,但您必须检查它是否可以转换为数字(例如使用
.isnumeric
),而不是它是否是整数。非常感谢,刚刚更新了我的答案!重新使用
.isnumeric
,这种方法不包括浮点数。为什么会有不必要的复杂性?使用enumerate()会将其缩短一点。同样,它仍然不起作用,因为列表中的所有元素都是字符串。可以使用
a.index(i)
,而不是
enumerate()
,这样会更快、更高效。@MushifAliNawaz谢谢你。我已经更新了我的答案。
>>> a = ['string', '1', '2', 'string1', '3', 'string2', '3.0', '2.5']
>>> results = []
>>> for v in a:
...     try:
...             value = int(v)
...     except ValueError:
...             try:
...                     value = float(v)
...             except ValueError:
...                     continue
...     results.append(value)
...
>>> results
[1, 2, 3, 3.0, 2.5]
[i for i, x in zip(range(len(a)), a) if not isinstance(x,str)]