Python中关于列表推导式(与循环和条件判断结合时)常会出现的问题

Python中关于列表推导式(与循环和条件判断结合时)常会出现的问题

话不多说,上代码:

N=int(input())
numlist=[1/i if i%2==1 for i in range(1,2*N)  ]
S=sum(numlist)
print("sum = {:.6f}".format(S))


报错信息

Python中关于列表推导式(与循环和条件判断结合时)常会出现的问题_第1张图片

但是我把if条件语句放在后面就没有这个问题:

N=int(input())
numlist=[1/i for i in range(1,2*N) if i%2==1 ]
S=sum(numlist)
print("sum = {:.6f}".format(S))

正确运行

Python中关于列表推导式(与循环和条件判断结合时)常会出现的问题_第2张图片

如果硬要较真放if在前面的话,可以这样改:

N=int(input())
numlist=[1/i if i%2==1 else 0 for i in range(1,2*N) if i%2==1 ]
S=sum(numlist)
print("sum = {:.6f}".format(S))

正确运行

Python中关于列表推导式(与循环和条件判断结合时)常会出现的问题_第3张图片

分析:前面1/i if i%2==1 else 0是一个条件表达式,必须要有else(条件表达式的格式);后面是一个if条件

·条件表达式

  • 条件表达式是三元的,需要三个值
  • 条件满足时的值、条件满足时的值、条件不满足时的值
  • 例子:count=10 if count > 20 else 30

非常感谢,你能看到这里,如有错误欢迎留言指正,一起进步吧~

也希望走过路过的大神给萌新一点指点,喵呜~(╹▽╹)

你可能感兴趣的:(python,python,算法)