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

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]


当前回答

只使用列表推导式:

[[int(y) for y in x] for x in T1]

其他回答

不要使用int(),而是使用float(),这样可以同时使用小数和整数。

int()是Python标准内置函数,用于将字符串转换为整数值。你用一个包含数字作为参数的字符串来调用它,它会返回转换成整数的数字:

>>> int("1") + 1
2

如果你知道你的列表T1的结构(它只是包含列表,只有一个级别),你可以在Python 3中这样做:

T2 = [list(map(int, x)) for x in T1]

在Python 2中:

T2 = [map(int, x) for x in T1]

你可以用一个列表推导式来做到这一点:

T2 = [[int(column) for column in row] for row in T1]

内部列表推导式([int(column) for column in row])从一个int-able对象序列(如row中的十进制字符串)构建一个int类型的列表。外部列表理解([…]for row in T1]))构建一个应用于T1中每个项的内部列表综合结果的列表。

如果任何行包含不能通过int转换的对象,则代码段将失败。如果希望处理包含非十进制字符串的行,则需要更聪明的函数。

如果知道行结构,则可以调用该行的函数来替换内部列表推导式。如。

T2 = [parse_a_row_of_T1(row) for row in T1]

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)
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