我试过了:
['a3', 'orange', -1, 33]
...这对我的名单绝对没有。
我希望得到这样的输出:
ProcessBuilder
答案 0 :(得分:2)
检查字符串s
是否为整数的简单方法是执行返回s.lstrip('+-').isdigit()
的{{1}}。如果响应为True/False
,则可以将其强制转换为True
,这会创建一个整数。
如果您具有索引值,则可以从响应中创建新列表或替换现有列表中的项目。这是一个简单的实现。
int(s)
aList = ['a3','orange','-1','33']
bList = []
for s in aList:
if s.lstrip('+-').isdigit():
bList.append(int(s.lstrip('+-'))
else:
bList.append(s)
print bList
的结果如下
bList
答案 1 :(得分:1)
这可能不是最pythonic的答案,但它有效:
假设
x = [['2','-5'],['a23','321','x12']]
代码是:
output = []
for row in x:
temp = []
for element in row:
try:
temp.append(int(element))
except ValueError:
temp.append(element)
output.append(temp)
这会给你:
[[2, -5], ['a23', 321, 'x12']]
答案 2 :(得分:0)
使用列表理解的Anothere解决方案:
aList = ['a3', 'orange', '-1', '33']
results = [int(i) if i.lstrip('+-').isdigit() else i for i in aList]
print results
<强>输出:强>
['a3', 'orange', -1, 33]
答案 3 :(得分:0)
使用列表理解可以在一行中实现相同。 (如果您需要解释,请告诉我)
aList = ['a3','14','orange',' - 1','33','0']
print([int(x)if x.lstrip(' - ')。isnumeric()else x for a in aList])
['a3',14,'orange',-1,33,0]