Python 如何将包含符号和数字的字符串转换为浮点或整数列表?
我有以下格式的列表:Python 如何将包含符号和数字的字符串转换为浮点或整数列表?,python,string,python-2.7,list,Python,String,Python 2.7,List,我有以下格式的列表: my_list = ['2-7', '10-22', '22-50', '50-70', '2-7', '10-22', '22-50', '50-70', '2-7', '10-22', '22-50', '50-70'] list_of_lists = [[2.0, 7.0], [10.0, 22.0], [22.0, 50.0], etc....] 如您所见,它包含的字符串是间隔 我正在尝试将此列表转换为以下格式: my_list = ['2-7', '10-22
my_list = ['2-7', '10-22', '22-50', '50-70', '2-7', '10-22', '22-50', '50-70', '2-7', '10-22', '22-50', '50-70']
list_of_lists = [[2.0, 7.0], [10.0, 22.0], [22.0, 50.0], etc....]
如您所见,它包含的字符串是间隔
我正在尝试将此列表转换为以下格式:
my_list = ['2-7', '10-22', '22-50', '50-70', '2-7', '10-22', '22-50', '50-70', '2-7', '10-22', '22-50', '50-70']
list_of_lists = [[2.0, 7.0], [10.0, 22.0], [22.0, 50.0], etc....]
我一直在尝试使用以下结构:
list_2 = []
for item in my_list:
list_2.append(list(item))
list_3 = [x for x in list_2 if x != "-"]
list_4 = []
for item_2 in list_3:
var = float(item_2)
list_4.append(var)
此代码的问题在于它将两个数字转换为两个独立的数字。而且,总的来说,感觉这不是一个最佳的解决方案
有人能给我一个指导或建议吗
干杯:
提前感谢。尝试拆分功能和映射功能
list_2 = []
for item in my_list:
list_2.append(list(map(float,item.split('-'))))
试试split函数和map函数
list_2 = []
for item in my_list:
list_2.append(list(map(float,item.split('-'))))
你在正确的轨道上,但你缺少的关键是能完成大部分繁重工作的方法 此外,我个人会在顶层使用列表理解来简化代码:
>>> [map(float, el.split('-')) for el in my_list]
[[2.0, 7.0], [10.0, 22.0], [22.0, 50.0], [50.0, 70.0], [2.0, 7.0], [10.0, 22.0], [22.0, 50.0], [50.0, 70.0], [2.0, 7.0], [10.0, 22.0], [22.0, 50.0], [50.0, 70.0]]
在这里:
[…my_list中的el]迭代my_list中的字符串,将未显示的表达式应用于每个元素,并将结果作为列表返回;
el.split'-'在破折号处拆分每个元素,将每个字符串转换为字符串列表;
mapfloat。。。将子列表中的每个字符串转换为浮点。
你在正确的轨道上,但你缺少的关键是能完成大部分繁重工作的方法 此外,我个人会在顶层使用列表理解来简化代码:
>>> [map(float, el.split('-')) for el in my_list]
[[2.0, 7.0], [10.0, 22.0], [22.0, 50.0], [50.0, 70.0], [2.0, 7.0], [10.0, 22.0], [22.0, 50.0], [50.0, 70.0], [2.0, 7.0], [10.0, 22.0], [22.0, 50.0], [50.0, 70.0]]
在这里:
[…my_list中的el]迭代my_list中的字符串,将未显示的表达式应用于每个元素,并将结果作为列表返回;
el.split'-'在破折号处拆分每个元素,将每个字符串转换为字符串列表;
mapfloat。。。将子列表中的每个字符串转换为浮点。
您可以这样尝试:
my_list = ['2-7', '10-22', '22-50', '50-70', '2-7', '10-22', '22-50', '50-70', '2-7', '10-22', '22-50', '50-70']
list_2 = []
for val in my_list:
x , y = map(float, val.split('-'))
list_2.append([x, y])
print(list_2)
输出:
[[2.0, 7.0], [10.0, 22.0], [22.0, 50.0], [50.0, 70.0], [2.0, 7.0], [10.0, 22.0], [22.0, 50.0], [50.0, 70.0], [2.0, 7.0], [10.0, 22.0], [22.0, 50.0], [50.0, 70.0]]
您可以这样尝试:
my_list = ['2-7', '10-22', '22-50', '50-70', '2-7', '10-22', '22-50', '50-70', '2-7', '10-22', '22-50', '50-70']
list_2 = []
for val in my_list:
x , y = map(float, val.split('-'))
list_2.append([x, y])
print(list_2)
输出:
[[2.0, 7.0], [10.0, 22.0], [22.0, 50.0], [50.0, 70.0], [2.0, 7.0], [10.0, 22.0], [22.0, 50.0], [50.0, 70.0], [2.0, 7.0], [10.0, 22.0], [22.0, 50.0], [50.0, 70.0]]
原始列表my_列表中的每一项都通过split方法分为两部分,分别分配给变量first和second
由于它们仍然是字符串,在上一个命令中,我使用float函数将它们转换为数字
原始列表my_列表中的每一项都通过split方法分为两部分,分别分配给变量first和second
由于它们仍然是字符串,在上一个命令中,我使用float函数将它们转换为数字。如果您不想使用map函数,这里有一个替代方法:
my_list = ['2-7', '10-22', '22-50', '50-70', '2-7', '10-22', '22-50', '50-70', '2-7', '10-22', '22-50', '50-70']
my_list_1 = [ [float(elem.split('-')[0]), float(elem.split('-')[1])] for elem in my_list]
print list_1
或
以下是两种情况下的结果:
[[2.0, 7.0], [10.0, 22.0], [22.0, 50.0], [50.0, 70.0], [2.0, 7.0], [10.0, 22.0], [22.0, 50.0], [50.0, 70.0], [2.0, 7.0], [10.0, 22.0], [22.0, 50.0], [50.0, 70.0]]
如果您不想使用映射功能,这里有一个替代方案:
my_list = ['2-7', '10-22', '22-50', '50-70', '2-7', '10-22', '22-50', '50-70', '2-7', '10-22', '22-50', '50-70']
my_list_1 = [ [float(elem.split('-')[0]), float(elem.split('-')[1])] for elem in my_list]
print list_1
或
以下是两种情况下的结果:
[[2.0, 7.0], [10.0, 22.0], [22.0, 50.0], [50.0, 70.0], [2.0, 7.0], [10.0, 22.0], [22.0, 50.0], [50.0, 70.0], [2.0, 7.0], [10.0, 22.0], [22.0, 50.0], [50.0, 70.0]]
我相信输出是:[,,,,,,]与标记中的Python 2不同。@depperm问题被标记为Python 2.7。我相信输出是:[,,,,,,]与标记中的Python 2不同。@depperm问题被标记为Python 2.7。可能缺乏解释。考虑到OP正在挣扎于基本的分裂,应该有一些解释。缺乏解释可能是错误的。考虑到OP正在挣扎于基本拆分,应该有一些解释。可能避免拆分两次?可能避免拆分两次?