如何将列表中的选定字符串转换为整数python

如何将列表中的选定字符串转换为整数python,python,string,list,Python,String,List,此问题是将列表中选定的字符串转换为整数 但是,此代码将整个列表转换为整数。 我怎样才能解决这个问题 list = [['x', 'x', '1', 'x'], ['4', 'x', 'x', 'x'], ['x', 'x', 'x', '2'], ['x', '3', 'x', 'x']] def convert(str_list): for i in range(len(str_list)): for j in range(len(str_list)): if str

此问题是将列表中选定的字符串转换为整数

但是,此代码将整个列表转换为整数。 我怎样才能解决这个问题

list = [['x', 'x', '1', 'x'], ['4', 'x', 'x', 'x'], ['x', 'x', 'x', '2'], ['x', '3', 'x', 'x']]

def convert(str_list):
for i in range(len(str_list)):
    for j in range(len(str_list)):
        if str_list[i][j].isdigit():
            str_list[i][j] = int(str_list[i][j])
return(str_list)
编辑:上面的代码^。我已经编辑过了!! 输出应该是

[x',x',1',x'],[4',x',x',x'],[x',x',x',2','x',3',x',x']


将此功能映射到您的列表:

def str2num(s):
# Convert a string to an int, float, or stripped string

    try:
        return int(s)

    except ValueError:
        try:
            return float(s)

        except ValueError:
            return s.strip()

您可以检查字符串是否包含带的数字。因此,只有在该索引处的元素包含数字时,才能调用
int

def convert(str_list):
    n = 0
    while n < len(str_list):
        if str_list[n].isdigit():
            str_list[n] = int(str_list[n])
        n += 1
    return(str_list)
输出

[['x', 'x', 1, 'x'], [4, 'x', 'x', 'x'], ['x', 'x', 'x', 2], ['x', 3, 'x', 'x']]

一个列表理解将是完美的,(也不要覆盖内置的!)

如果必须使用while循环,可以执行以下操作:

def convert(str_list):
    for i in range(len(data)):
        for n in range(len(data[i])):
            try: data[i][n] = int(data[i][n])
            except: pass

好吧,但如果它是列表中的一个列表呢?我只是为了循环它吗?@PeachhSalts如果您的列表包含嵌套列表,并且您还想对嵌套元素调用
convert
,那么您可能需要对它们递归调用
convert
。你能用这样一个例子来更新你的问题吗?你希望得到什么样的结果?
data = [['x', 'x', '1', 'x'], ['4', 'x', 'x', 'x'], ['x', 'x', 'x', '2'], ['x', '3', 'x', 'x']]

def converted(str_list):
    return [int(s) if s.isdigit() else s for s in data]
def convert(str_list):
    for i in range(len(data)):
        for n in range(len(data[i])):
            try: data[i][n] = int(data[i][n])
            except: pass