2024-09-21 05:39:30 发布
网友
在Python中,我想转换字符串列表:
l = ['sam','1','dad','21']
并将整数转换为如下整数类型:
t = ['sam',1,'dad',21]
我试过:
t = [map(int, x) for x in l]
但显示出了一个错误。
如何将列表中的所有intable字符串转换为int,而将其他元素保留为字符串?
我的清单可能是多维的。一种适用于通用列表的方法更可取:
l=[['aa','2'],['bb','3']]
我会使用一个自定义函数:
def try_int(x): try: return int(x) except ValueError: return x
示例:
>>> [try_int(x) for x in ['sam', '1', 'dad', '21']] ['sam', 1, 'dad', 21]
编辑:如果需要将上述内容应用于列表列表,为什么在构建嵌套列表时不将这些字符串转换为int?
无论如何,如果需要的话,如何遍历这样的嵌套列表并应用上面的方法只是一个选择的问题。
一种方法是:
>>> list_of_lists = [['aa', '2'], ['bb', '3']] >>> [[try_int(x) for x in lst] for lst in list_of_lists] [['aa', 2], ['bb', 3]]
显然,您可以将其重新分配给list_of_lists:
list_of_lists
>>> list_of_lists = [[try_int(x) for x in lst] for lst in list_of_lists]
使用map和lambda怎么样
>>> map(lambda x:int(x) if x.isdigit() else x,['sam','1','dad','21']) ['sam', 1, 'dad', 21]
或是对清单的理解
>>> [int(x) if x.isdigit() else x for x in ['sam','1','dad','21']] ['sam', 1, 'dad', 21] >>>
如注释中所述,由于isdigit可能不会捕获负数,因此这里有一个处理它的精炼条件值得注意的是,如果字符串是字母数字而不是字母,则它是一个数字:-)
>>> [int(x) if x.isalnum() and not x.isalpha() else x for x in ['sam','1','dad','21']] ['sam', 1, 'dad', 21]
我将创建一个生成器来执行此操作:
def intify(lst): for i in lst: try: i = int(i) except ValueError: pass yield i lst = ['sam','1','dad','21'] intified_list = list(intify(lst)) # or if you want to modify an existing list # lst[:] = intify(lst)
如果要在列表列表中执行此操作,请执行以下操作:
new_list_of_lists = map(list, map(intify, list_of_lists))
我会使用一个自定义函数:
示例:
编辑:如果需要将上述内容应用于列表列表,为什么在构建嵌套列表时不将这些字符串转换为int?
无论如何,如果需要的话,如何遍历这样的嵌套列表并应用上面的方法只是一个选择的问题。
一种方法是:
显然,您可以将其重新分配给
list_of_lists
:使用map和lambda怎么样
或是对清单的理解
如注释中所述,由于isdigit可能不会捕获负数,因此这里有一个处理它的精炼条件值得注意的是,如果字符串是字母数字而不是字母,则它是一个数字:-)
我将创建一个生成器来执行此操作:
如果要在列表列表中执行此操作,请执行以下操作:
相关问题 更多 >
编程相关推荐