【问题标题】:converting str to int in list comprehension [duplicate]在列表理解中将字符串转换为 int [重复]
【发布时间】:2019-01-15 15:27:09
【问题描述】:

我有一个带有年份作为字符串的列表,但缺少的年份很少,它们表示为空字符串。

我正在尝试将这些字符串转换为整数并跳过无法使用列表理解和 try 和 except 子句转换的值?

birth_years = ['1993','1994', '' ,'1996', '1997', '', '2000', '2002']

我试过这段代码,但它不起作用。

try:
    converted_years = [int(year) for year  in birth_years]
except ValueError:
    pass

required output:
converted_years = ['1993','1994','1996', '1997', '2000', '2002']

【问题讨论】:

  • [int(year) for year inbirth_years if year]
  • 您可以使用列表解析或try ... except。两者都不是。
  • 你不能在理解中使用 try-except,你可以在常规 for 循环中使用
  • 当然你可以创建一个单独的函数来执行 try-except 然后在理解中调用它,但我没有看到任何意义(至少对于这个简单的例子)
  • 写一个像def my_f: try: return int(year); except ValueError: pass这样的函数然后在理解[my_f(year) for year in birth_years if my_f(year) ]中(pass意味着当遇到错误时返回fasly None,不是这不是最有效的两次调用函数)

标签: python python-3.x list-comprehension


【解决方案1】:

[int(year) for year in birth_years if year.isdigit()]

【讨论】:

    【解决方案2】:
    converted_years = [int(year) for year in birth_years if year]
    

    【讨论】:

      【解决方案3】:
      converted_years = [int(x) for x in birth_years if x.isdigit()]
      

      【讨论】:

        猜你喜欢
        • 2017-07-24
        • 2019-10-23
        • 2014-06-16
        • 2015-06-18
        • 2017-05-07
        • 1970-01-01
        • 2016-04-14
        • 2021-10-06
        相关资源
        最近更新 更多