【问题标题】:Python - How can i remove a letter from a list of strings, change the strings to floats, transform some of the floats, and keep the orderPython - 我如何从字符串列表中删除一个字母,将字符串更改为浮点数,转换一些浮点数并保持顺序
【发布时间】:2018-02-13 05:25:57
【问题描述】:
myList=['57.43 N', '44.78 S', '59.64 S', '88.11 N']

我正在学习 python,我有一个代表Lat/Lon 的字符串列表。我需要删除N/S,当有S 时乘以-1,并将所有字符串转换为floats。我在想我可以建立一个我的值的索引,并以某种方式将带有 S 的字符串与带有 N 的字符串分开,创建 North 和 South 列表删除 N/S,

x=[x.remove('NS') for x in myList]
y=[y.remove('S') for x in myList] 

将 y 列表乘以 -1 并使用 extend x by y,这样我的索引就会保持不变。任何建议都会非常可爱。 谢谢。

【问题讨论】:

  • 到底是什么问题?你似乎有一个解决方案。
  • 不要在列表中使用副作用。
  • 您希望您的输出是两个列表,即NS,如下所示? [57.43, 88.11][-44.78, -59.64] 给定 myList?

标签: python string list loops str-replace


【解决方案1】:

您可以使用列表推导来简洁地实现这一点:

newList = [-1 * float(x[:-2]) if 'S' in x else float(x[:-2]) for x in mylist]

当然,这假设您的每个元素都满足以下条件:

  1. 最后两个字符始终为' N'' S'
  2. 其他字符可以转换成浮点数。

【讨论】:

    【解决方案2】:

    您可以将每个字符串拆分为数字和方向。如果方向是S,则乘以-1

    myList=['57.43 N', '44.78 S', '59.64 S', '88.11 N']
    
    result = []
    for data in myList:
        num, direction = data.split()
    
        num = float(num)
        if direction == 'S':
            num *= -1
    
        result.append(num)
    
    print(result)
    # [57.43, -44.78, -59.64, 88.11]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-19
      • 2011-11-25
      • 1970-01-01
      • 2019-07-10
      • 1970-01-01
      • 2019-03-31
      • 1970-01-01
      相关资源
      最近更新 更多