【发布时间】:2021-04-16 03:47:26
【问题描述】:
有一个类似的数组
a = ['string', '1', '2', 'string2', '4', 'string5', '5' ...]
我怎样才能找到像这样的非字符串索引
[1,2,4,6 ...]
如果我使用它不起作用
isinstance(a, str)
【问题讨论】:
标签: python python-3.x string integer indices
有一个类似的数组
a = ['string', '1', '2', 'string2', '4', 'string5', '5' ...]
我怎样才能找到像这样的非字符串索引
[1,2,4,6 ...]
如果我使用它不起作用
isinstance(a, str)
【问题讨论】:
标签: python python-3.x string integer indices
如果你的list 有integers 和字符串,你可以使用isnumeric 和List Comprehension:
In [843]: a = ['string', '1', '2', 'string2', '4', 'string5', '5']
In [847]: ans = [a.index(i) for i in a if i.isnumeric()]
In [848]: ans
Out[848]: [1, 2, 4, 6]
或者,根据@MushifAliNawaz 的评论使用enumerate:
In [874]: ans = [c for c,i in enumerate(a) if i.isnumeric()]
In [875]: ans
Out[875]: [1, 2, 4, 6]
【讨论】:
a.index(i)代替enumerate(),这样会更快更高效。
您应该使用loop 并检查数组中的每个元素:
>>> 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]
【讨论】:
.isnumeric)而不是 int。
.isnumeric,这种方式不覆盖case number是float类型的。
[i for i, x in zip(range(len(a)), a) if not isinstance(x,str)]
【讨论】: