如何将列表中的选定字符串转换为整数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