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正在挣扎于基本拆分,应该有一些解释。可能避免拆分两次?可能避免拆分两次?