所以,如果我有100个子列表必须将字符串替换为整数 L = [' 2013',' Patrick',' M',' 2566']
我必须将2013年和此类数字转换为所有子列表的整数。 我试过了: 假设每个子列表有4个元素 newlist = [map(int,x)for x in L [0] [:5]]
但显然我一直都会收到错误,因为帕特里克'无法转换。
答案 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]]