我有一个包含字符串的元组的元组:

T1 = (('13', '17', '18', '21', '32'),
      ('07', '11', '13', '14', '28'),
      ('01', '05', '06', '08', '15', '16'))

我想把所有的字符串元素转换成整数,并把它们放回一个列表的列表:

T2 = [[13, 17, 18, 21, 32],
      [7, 11, 13, 14, 28],
      [1, 5, 6, 8, 15, 16]]

相关:

转换 str -> int 转换列表[str] ->列表[int]


当前回答

使用列表推导式:

t2 = [map(int, list(l)) for l in t1]

其他回答

你可以这样做:

T1 = (('13', '17', '18', '21', '32'),  
     ('07', '11', '13', '14', '28'),  
     ('01', '05', '06', '08', '15', '16'))  
new_list = list(list(int(a) for a in b if a.isdigit()) for b in T1)  
print(new_list)  

Python 2的另一个函数解决方案:

from functools import partial

map(partial(map, int), T1)

Python 3会有一点混乱:

list(map(list, map(partial(map, int), T1)))

我们可以用包装器来解决这个问题

def oldmap(f, iterable):
    return list(map(f, iterable))

oldmap(partial(oldmap, int), T1)

在Python 3.5.1中,类似这样的工作:

c = input('Enter number:')
print (int(float(c)))
print (round(float(c)))

and

Enter number:  4.7
4
5

如果它只是一个元组的元组,像rows=[map(int, row) for row in rows]这样的东西就可以了。(这里有一个列表理解和一个map(f, lst)的调用,它等于[f(a) for a in lst]

Eval并不是你想要做的,以防在你的数据库中由于某种原因存在类似__import__("os").unlink("importantsystemfile")的东西。 总是验证你的输入(如果没有其他,异常int()将引发,如果你有错误的输入)。

T3=[]

for i in range(0,len(T1)):
    T3.append([])
    for j in range(0,len(T1[i])):
        b=int(T1[i][j])
        T3[i].append(b)

print T3