Python 这条线是干什么的?(使用num和enumerate)
我是一个python初学者,我已经得到了这段代码来写出每行代码的作用。代码如下:Python 这条线是干什么的?(使用num和enumerate),python,Python,我是一个python初学者,我已经得到了这段代码来写出每行代码的作用。代码如下: z = [int(input("Enter your nth term sequence ")) for _ in range(12)] total = sum([num * 8 if i % 2 == 0 else num * 4 for i, num in enumerate(z)]) 所以,我假设z是一个列表,其中用户输入第n项序列的数字,他们可以输入12位数字。然后,如果某个数除以2得到余数为0,则代码将
z = [int(input("Enter your nth term sequence ")) for _ in range(12)]
total = sum([num * 8 if i % 2 == 0 else num * 4 for i, num in enumerate(z)])
所以,我假设z是一个列表,其中用户输入第n项序列的数字,他们可以输入12位数字。然后,如果某个数除以2得到余数为0,则代码将找到一个数乘以8的和。我只是不明白([num*8,如果I%2==0,否则num*4,对于I,枚举中的num(z)])
的意思。我已经试过了,也试过了,但这太让人困惑了。如果可能,请提供帮助代码:
foo = [num * 8 if i % 2 == 0 else num * 4 for i, num in enumerate(z)]
在功能上与此等效:
foo = []
for i, num in enumerate(z): # num is element in z, i is index of num
if i % 2 == 0:
foo.append(num*8)
else:
foo.append(num*4)
然后用户对结果调用sum
。这回答了你的问题吗
编辑:解释枚举 例如,您应该习惯于阅读有关函数的文档。读完之后,如果你仍然不明白,那么你应该搜索stackoverflow。例如: 电话:
for num in z:
i = z.index(num)
# Do stuff
在功能上与以下内容相同:
for i, num in enumerate(z):
# Do stuff
守则:
foo = [num * 8 if i % 2 == 0 else num * 4 for i, num in enumerate(z)]
在功能上与此等效:
foo = []
for i, num in enumerate(z): # num is element in z, i is index of num
if i % 2 == 0:
foo.append(num*8)
else:
foo.append(num*4)
然后用户对结果调用sum
。这回答了你的问题吗
编辑:解释枚举 例如,您应该习惯于阅读有关函数的文档。读完之后,如果你仍然不明白,那么你应该搜索stackoverflow。例如: 电话:
for num in z:
i = z.index(num)
# Do stuff
在功能上与以下内容相同:
for i, num in enumerate(z):
# Do stuff
好吧,让我们把它分解一下。您正在将某些内容存储到变量“total”中 然后你要把括号里所有的东西加起来。运行一个if语句,表示if i模数2(即如果它可以被2整除并且没有余数)将num(一个变量)乘以8追加到列表z
否则,将num乘以4追加到列表z。这是一种简洁的方式,他们写的是陈述,而不是多行。您正在将某些内容存储到变量“total”中 然后你要把括号里所有的东西加起来。运行一个if语句,表示if i模数2(即如果它可以被2整除并且没有余数)将num(一个变量)乘以8追加到列表z
否则,将num乘以4追加到列表z。这是一种简洁的方式,让他们写出陈述,而不是多行让我们一步一步地把它分解
z = [int(input("Enter your nth term sequence ")) for _ in range(12)]
首先,您认为z
是一个列表的假设是正确的。它是从列表中生成的。它使用input(“输入第n个术语序列”)
从用户处获取输入,使用for在范围(12)
中总共12次。因此,z
将是12个用户输入整数的列表(不是数字,因为它可以是任何整数,而不仅仅是0-9)
接下来我们有:
total = sum([num * 8 if i % 2 == 0 else num * 4 for i, num in enumerate(z)])
很明显,我们正在从一个列表的总和生成一个总和,该列表的total=sum([…])
。接下来,我们需要计算出列表理解生成的列表的内容
为了使列表理解更容易理解,我们可以添加一些括号,将理解分解为更容易管理的部分,然后分别处理
(num*8)if(i%2==0)else(num*4)for(i,num)in(枚举(z))
前三组相当不言自明:
num*8
8倍于一个数字
i%2==0
检查i
是否为偶数
num*4
一个数字的四倍
因此,如果i
是偶数,则列表理解的前半部分返回的值是该数字的八倍,如果不是偶数,则返回该数字的四倍
这样,我们就可以理解enumerate(z)中i,num的列表的后半部分了
让我们先讨论枚举。Enumerate获取一个序列,并对该序列中的每个元素进行编号。例如,enumerate(['a','b','c'])
将返回一个两元素元组的列表[(0,'a'),(1,'b'),(2,'c')]
对于i,num in中的从enumerate(z)
中提取元组,并将每个元组解压为i
和num
。因此,i
是由enumerate
生成的索引,num
是原始用户输入
TL;博士
第1行从用户输入中获取12个整数,并将它们存储在z
第2行获取这些整数,对它们进行索引(从0开始),如果索引为偶数,则将该数字乘以8,如果索引为奇数,则将该数字乘以4
最后,第2行将所有相乘的用户输入相加,并将其存储在总计中让我们一步一步地分解
z = [int(input("Enter your nth term sequence ")) for _ in range(12)]
首先,您认为z
是一个列表的假设是正确的。它是从列表中生成的。它使用input(“输入第n个术语序列”)
从用户处获取输入,使用for在范围(12)
中总共12次。因此,z
将是12个用户输入整数的列表(不是数字,因为它可以是任何整数,而不仅仅是0-9)
接下来我们有:
total = sum([num * 8 if i % 2 == 0 else num * 4 for i, num in enumerate(z)])
很明显,我们正在从一个列表的总和生成一个总和,该列表的total=sum([…])
。接下来,我们需要计算出列表理解生成的列表的内容
为了使列表理解更容易理解,我们可以添加一些括号,将理解分解为更容易管理的部分,然后分别处理
(num*8)if(i%2==0)else(num*4)for(i,num)in(枚举(z))
前三组相当不言自明:
num*8
8倍于一个数字
i%2==0
检查i
是否为偶数
num*4
一个数字的四倍
因此,如果i
是偶数,则列表理解的前半部分返回的值是该数字的八倍,如果不是偶数,则返回该数字的四倍
那就剩下最后一个了