我有一个以下格式的列表:
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)
这个代码的问题是它将两个数字转换成两个独立的数字。而且,总的来说,我觉得这不是一个最佳的解决方案。
有人能给我指点或建议吗?
干杯:)提前谢谢你。
发布于 2017-08-01 02:12:47
您走在了正确的道路上,但是您缺少的关键是str.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]]
这里:
[... el in my_list]
迭代my_list
中的字符串,将表达式(未显示)应用于每个元素,并以list;el.split('-')
的形式返回结果。将每个字符串转换为strings;map(float, ...)
列表将子列表中的每个字符串转换为浮点型。发布于 2017-08-01 02:12:26
尝试使用split函数和map函数
list_2 = []
for item in my_list:
list_2.append(list(map(float,item.split('-'))))
发布于 2017-08-01 02:29:55
您可以尝试这样做:
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]]
https://stackoverflow.com/questions/45422575
复制相似问题