【发布时间】: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