如何在Python中把浮点数列表转换为字符串列表

1,299 阅读4分钟

将浮点列表fs 转换为字符串列表的最Pythonic方法是使用单行代码fs = [str(x) for x in fs] 。它使用列表理解法遍历列表中的所有元素fs ,并使用str(x) 构造函数将每个列表元素x 转换为一个字符串值。

本文向你展示了将一个仅由浮点数组成的一维列表 转换为字符串列表的最简单方法。

问题:给定一个浮点数的列表[1.0, 2.0, 3.0] 。如何将其转换为字符串列表["1.0", "2.0", "3.0"]

方法1:列表理解法

假设我们有一个列表。

a = [1.1, 1.2, 1.8, 0.5, 5.9, -2.3]

现在,检查该列表的类型

print(type(a[0]))
# <class 'float'>

让我们应用内置 函数 [str()](https://blog.finxter.com/python-str-function/),并使用列表理解法得到一个字符串列表。

print([str(a) for a in a])
# ['1.1', '1.2', '1.8', '0.5', '5.9', '-2.3']

💡列表理解是一种创建列表的紧凑方式。简单的公式是[expression + context]表达式。对每个列表元素做什么?语境。要选择哪些元素?上下文由任意数量的forif 语句。

检查新列表中数字的类型。

A = [str(a) for a in a]
print(type(A[0]))
# <class 'str'>

内置函数str ,将一个浮点数 转换为该浮点数的字符串表示。因此,它可以帮助我们在一行代码中从浮点数的列表中创建一个新的字符串列表。

方法2:映射函数

内置函数 [map](https://blog.finxter.com/daily-python-puzzle-string-encrpytion-ord-function-map-function/ "Mastering the Python Map Function [+Video]")是很好的优化和高效的;当它被调用时,列表中的元素在访问时被检索出来。因此,每次在内存中存储和处理一个元素,所以程序不需要在内存中存储整个元素列表。

应用于同一个列表a ,下面的代码。

a = [1.1, 1.2, 1.8, 0.5, 5.9, -2.3]
print(list(map(str, a)))
# ['1.1', '1.2', '1.8', '0.5', '5.9', '-2.3']

[map()](https://blog.finxter.com/python-map/ "Python map() — Finally Mastering the Python Map Function [+Video]")函数返回一个可迭代的 map 对象,我们需要使用内置的 [list()](https://blog.finxter.com/python-list/ "Python list() — A Simple Guide with Video")构造函数转换为列表。

方法3:For Loop

当然,你也可以用一个简单的for循环将一个浮点数的列表转换为一个字符串的列表。这是大多数来自Java和C++等编程语言的人的做法,因为他们还不知道使用 列表理解的最Pythonic方式(见方法1)。

a = [1.1, 1.2, 1.8, 0.5, 5.9, -2.3]
strings = []

for element in a:
    strings.append(str(element))

print(strings)
# ['1.1', '1.2', '1.8', '0.5', '5.9', '-2.3']

这种将浮点数列表转换为字符串列表的基本方法使用了三个步骤。

  • 创建一个空的列表,用 **strings = []**.
  • 用一个循环来迭代每个浮动元素,例如 [for](https://blog.finxter.com/python-cheat-sheet/ "Python Beginner Cheat Sheet: 19 Keywords Every Coder Must Know")循环,如 **for element in list**.
  • 使用...将浮点数转换为字符串 [**str(element)**](https://blog.finxter.com/python-str-function/ "Python str() Function")方法将其追加到新的字符串列表中。 [**list.append()**](https://blog.finxter.com/python-list-append/ "Python List append() Method")方法将其追加到新的字符串列表中。

方法4:自定义字符串转换的字符串格式化

如果这对你来说还不够,例如,你需要转换后的字符串的特定格式 ,如小数点后只有两位数字,你应该看看 Python 强大的字符串格式化功能。

例如,要把一个有很多数字的浮点数列表转换成只有两位数字的字符串列表,可以使用string.format() 方法。

a = [1.11111, 1.200023402, 1.844333, -0.5000001]
strings = ['{:.2f}'.format(x) for x in a]
print(strings)
# ['1.11', '1.20', '1.84', '-0.50']

💡 Python 内置的 函数将一种格式的输入转换为你定义的另一种格式的输出。具体来说,它将格式指定器 应用于参数 并返回 的格式化表示。例如, 返回字符串表示 。format(value, spec) spec value value format(42, 'f') '42.000000'

奖励方法 5:f-String

使用 Python 格式化功能的一个更简洁的方法可以通过 Python 3 及以后的f-strings访问。通过使用列表理解和每个列表元素上的浮动到字符串的转换表达式f'{x:.2f}' ,将一个浮动列表转换为字符串列表x

这里有一个例子。

a = [1.11111, 1.200023402, 1.844333, -0.5000001]
strings = [f'{x:.2f}' for x in a]
print(strings)
# ['1.11', '1.20', '1.84', '-0.50']

注意你可以通过相应地设置格式指定器来增加或减少数字的数量。

  • f'{x:.2f}' 产生两个数字,如'3.12'
  • f'{x:.3f}' 产生两位数,如'3.123'
  • f'{x:.4f}' 产生两位数,如:产生两位数,如:产生两位数,如:产生两位数。'3.1234'