【问题标题】:Create a string list into a float list [duplicate]将字符串列表创建为浮点列表[重复]
【发布时间】:2020-02-15 00:28:29
【问题描述】:

我正在从一个文件中读取并能够计算一个列表,但遗憾的是它读取为: ['40\n', '35\n', '49\n', '53\n', '38\n', '39\n', '40\n', '37\n ', '49\n', '34\n', '38\n', '43\n', '47\n', '\n'] 当我希望它读作: ['40', '35', '49', '53', '38', '39', '40', '37', '49', '34', '38', '43 ', '47'] 我知道我必须附加它和/或切片它才能变成浮点数。我真的被困在这部分。这是使我的其余代码工作的一部分。任何帮助表示赞赏!

【问题讨论】:

标签: python python-3.x string list


【解决方案1】:

'\n' 是换行符。前面有数字时可以忽略。因此你可以这样做:

a = ['40\n', '35\n', '49\n', '53\n', '38\n', '39\n', '40\n', '37\n', '49\n', '34\n', '38\n', '43\n', '47\n', '\n']

[int(i) for i in a if i!='\n']
[40, 35, 49, 53, 38, 39, 40, 37, 49, 34, 38, 43, 47]

如果你想要花车,就这样做:

[float(i) for i in a if i!='\n']
[40.0, 35.0, 49.0, 53.0, 38.0, 39.0, 40.0, 37.0, 49.0, 34.0, 38.0,

43.0, 47.0]

【讨论】:

  • 如果我的文件被称为“内容”,它会是 [float(content) for content in a if (content)!='\n']
  • @NewHere NO.你不能这样做。 i 不是文件而是索引。您应该首先将文件读入 python 并遍历这些行
【解决方案2】:
a = ['40\n', '35\n', '49\n', '53\n', '38\n', '39\n', '40\n', '37\n', '49\n', '34\n', '38\n', '43\n', '47\n', '\n']

float_a = [float(x[:-1]) for x in a if x != '\n']

您可以使用列表推导轻松将此列表转换为浮点列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多