将字符串转换为子列表中的int - python

时间:2014-10-07 05:49:59

标签: python

所以,如果我有100个子列表必须将字符串替换为整数 L = [' 2013',' Patrick',' M',' 2566']

我必须将2013年和此类数字转换为所有子列表的整数。 我试过了: 假设每个子列表有4个元素 newlist = [map(int,x)for x in L [0] [:5]]

但显然我一直都会收到错误,因为帕特里克'无法转换。

3 个答案:

答案 0 :(得分:5)

你可以简单列表理解:)

results = [int(i) if i.isdigit() else i for i in L]

答案 1 :(得分:2)

另一个选择是捕获ValueError并回退到原始值,如果需要比单线程提供更多的灵活性:

L = ['2013', 'Patrick', 'M', '2566']

def try_convert(string):
    try:
        return int(string)
    except ValueError:
        return string

newlist = map(try_convert, L)

结果:

[2013, 'Patrick', 'M', 2566]

答案 2 :(得分:0)

尝试此操作,迭代主列表,并根据isdigit()函数重建转换为int的子列表:

>>> #your main list    
>>> huge_list = [
...     ['2013', 'Patrick', 'M', '2566'],
...     ['1', 'Bob', 'M', '25']
... ]
>>> #for each sublist, convert only the elements that are numbers (using isdigit() function)
>>> for idx, sublist in enumerate(huge_list):
...     huge_list[idx] = [
...         int(el) if el.isdigit() else el
...         for el in sublist
...     ]
... 
>>> huge_list
[[2013, 'Patrick', 'M', 2566], [1, 'Bob', 'M', 25]]