Python:将正整数和负整数的列表元素字符串转换为int?

时间:2017-11-21 04:28:11

标签: python python-3.x list

我正在用这个来震撼我的大脑。我需要遍历嵌套列表(列表列表,因此只有一个级别的子列表)来检查条目是正整数还是负整数。如果是,我需要将其转换为int。问题是其他一些列表元素包含数字,所以我不能只将包含数字的列表元素转换为int,因为我收到错误。

我试过了:

['a3', 'orange', -1, 33]

...这对我的名单绝对没有。

我希望得到这样的输出:

ProcessBuilder

4 个答案:

答案 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]