【问题标题】:List comprehension using if else with assignment operator使用 if else 和赋值运算符的列表理解
【发布时间】:2020-06-09 11:09:35
【问题描述】:

我对列表推导有疑问。 现在我有一个任务肯定要使用列表推导。我们如何使用列表推导来做到这一点。

n=int(input("Enter the total no of plots:"))
p=0
sum1=0
sum2=0
sum3=0
a=[]
if n>0 and n<=20:
    print("Enter the numbers of each plot:")
    for i in range(n):
        b=int(input())
        if b>0:
            a.append(b)
        else:
            print("Invalid Input")
            p=1
            break

else:
    p=1
    print("Invalid Input")
if p==0:
    c=[sum1=sum1+i if i%2==0 else sum2=sum2+i for i in range(n)]
    sum3=(sum1+sum2)/2
    print("The password for the file is: {:.2f}".format(sum3))

【问题讨论】:

  • 您希望分配给 c 的列表看起来像什么。这看起来不应该是一个列表理解,而是应该是一个正常的 for 循环
  • n=int(input("输入图的总数:")) p=0 sum1=0 sum2=0 sum3=0 a=[] if n>0 and n0: a.append(b) else: print("Invalid Input") p =1 break else: p=1 print("Invalid Input") if p==0: c=[sum1=sum1+i if i%2==0 else sum2=sum2+i for i in range(n)] sum3=(sum1+sum2)/2 print("文件的密码是:{:.2f}".format(sum3)) 这是整个代码。
  • 你能用这个编辑问题吗,因为我无法从中知道每个代码块的缩进。也让我知道你期望 c 在列表理解之后包含什么
  • 我更新了整个代码。请检查一次

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


【解决方案1】:

您不能在列表中分配变量。您尝试做的事情在列表理解中是不可能的。

c = []
sum1 = # initial value for sum1
sum2 = # initial value for sum2

for i in range(n):
  if i % 2 == 0:
    sum1 += i
    c.append(sum1)
  else:
    sum2 += i
    c.append(sum2)

【讨论】:

  • 我明白了,但我有一个任务,在代码中我需要确定使用列表理解。那么还有其他方法吗
【解决方案2】:

在列表推导中无法进行赋值。相反,您可以将代码分成两行列表理解来完成您需要的操作。

sum1=sum([i for i in range(n) if i%2==0])
sum2=sum([i for i in range(n) if i%2!=0])

【讨论】:

  • 我明白了,但我有一个任务,在代码中我需要确定使用列表理解。那么还有其他方法吗
  • 您能否解释一下变量“a”的用途。因为您正在向它附加值并且从不使用它。以及期望在 C 中可用的内容
猜你喜欢
  • 2022-12-13
  • 2018-11-13
  • 2020-12-12
  • 2017-08-03
  • 2014-02-12
  • 1970-01-01
  • 2018-03-18
  • 2015-10-28
  • 2018-04-27
相关资源
最近更新 更多