如何将包含符号和数字的字符串转换为浮点或整数列表?

2024-04-25 20:43:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下格式的清单:

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']

如您所见,它包含的字符串是间隔。在

我正在尝试将此列表转换为以下格式:

^{pr2}$

我一直在尝试使用以下结构:

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)

这个代码的问题是它将两位数字转换成两个独立的数字。而且,总的来说,这并不是一个最佳的解决方案。在

有谁能给个指导或建议吗?在

干杯:) 提前谢谢你。在


Tags: 字符串in列表for间隔ifvarmy
3条回答

您是在正确的轨道上,但是您缺少的关键是^{}方法,它可以完成这里大部分的繁重工作。在

另外,我个人会在顶层使用列表理解来简化代码:

>>> [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中的字符串,将表达式(未显示)应用于每个元素,并以列表形式返回结果
  • el.split('-')在破折号处拆分每个元素,将每个字符串转换为字符串列表
  • map(float, ...)将子列表中的每个字符串转换为浮点。在

你可以这样做:

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)

输出:

^{pr2}$

尝试分割函数和映射函数

list_2 = []
for item in my_list:
    list_2.append(list(map(float,item.split('-'))))

相关问题 更多 >