如何将列表中所有字符串转换为整数?

461

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

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]]
15个回答

1
在Python 3.5.1中,像这样的东西可以正常工作:
c = input('Enter number:')
print (int(float(c)))
print (round(float(c)))

并且

Enter number:  4.7
4
5

1
如果只是元组的元组,类似于rows=[map(int, row) for row in rows]就可以解决问题了。(其中包含列表推导和调用map(f,lst),等同于[f(a) for a in lst]。)
如果你的数据库中有像__import__("os").unlink("importantsystemfile")这样的东西,那么Eval不是你想要的。 始终验证你的输入(如果没有其他内容,异常int()将会引发错误)。

0

Python内置函数int(string)和可选参数base。

如果您的字符串包含整数值,则将其转换为相应的整数值。 但是,如果您的字符串包含十进制数,则需要使用float()进行转换。

用法:

a = '22'
b = int(a)

并且

if a = '22.22'
b = int(a) '''will give error, invalid literal for int().'''
b = float(a) '''will convert the string.'''

-2
你可以像这样做:
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)  

-2

我想分享一个可用的选项,似乎这里还没有提到:

rumpy.random.permutation(x)

将生成数组x的随机排列。虽然不是您所要求的确切内容,但它是类似问题的潜在解决方案。


不完全是你所要求的 - 它与问题毫无关系 - Karl Knechtel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接