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

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]


当前回答

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

rumpy.random.permutation(x)

将生成数组x的随机排列。这并不完全是您所要求的,但它是类似问题的潜在解决方案。

其他回答

到目前为止,我同意每个人的答案,但问题是,如果你没有所有的整数,它们会崩溃。

如果你想排除非整数

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) for b in T1 if a.isdigit())

这只会产生实际的数字。我不使用直接的列表推导式的原因是列表推导式泄露了它们的内部变量。

使用列表推导式:

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

看这个函数

def parse_int(s):
    try:
        res = int(eval(str(s)))
        if type(res) == int:
            return res
    except:
        return

Then

val = parse_int('10')  # Return 10
val = parse_int('0')  # Return 0
val = parse_int('10.5')  # Return 10
val = parse_int('0.0')  # Return 0
val = parse_int('Ten')  # Return None

你也可以检查

if val == None:  # True if input value can not be converted
    pass  # Note: Don't use 'if not val:'

你可以这样做:

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)  

只使用列表推导式:

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