[英]finding the index of a variable in a nested list
def total_sales(sales_table, product):
if product in sales_table[0]:
return sum(list(zip(*sales_table[1:]))[sales_table[0].index(product)])
return 'Product not found'
嗨,有人可以解释一下 1. * 在zip()
和 2 之后做了什么,为什么sum()
中的两个元素之间没有逗号或中断
非常感谢
为了遍历嵌套列表,我通常使用 For 循环。
查看此站点以获取有关在 python 中迭代列表的方法的更多信息:
https://www.geeksforgeeks.org/iterate-over-a-list-in-python/
要获取列表中变量的索引(在正确遍历所有嵌套列表之后),请使用.index(element, start, end)。 这将返回您正在搜索的所需元素的索引。
有关 .index() 的更多信息
https://www.programiz.com/python-programming/methods/list/index
zip() function 返回一个 zip object,它是元组的迭代器,其中每个传递的迭代器中的第一个项目配对在一起,然后迭代第二个传递的项目。
如果传递的迭代器具有不同的长度,则具有最少项的迭代器决定新迭代器的长度。
sum(iterable, start) function 返回一个数字,即迭代中所有项目的总和。
https://www.programiz.com/python-programming/methods/built-in/sum
例子:
numbers = [2.5, 3, 4, -5]
# start parameter is not provided
numbers_sum = sum(numbers)
print(numbers_sum)
# start = 10
numbers_sum = sum(numbers, 10)
print(numbers_sum)
# 4.5
# 14.5
* 也可用于拆箱。 最简单的例子是我们有列表、元组或字典形式的数据,并且 function 采用变量 arguments:
from functools import reduce
primes = [2, 3, 5, 7, 11, 13]
def product(*numbers):
p = reduce(lambda x, y: x * y, numbers)
return p
product(*primes)
# 30030
product(primes)
# [2, 3, 5, 7, 11, 13]
因为 product() 采用变量 arguments,我们需要解压列表数据并将其传递给 function。 在这种情况下,如果我们将素数作为 *primes 传递,素数列表的每个元素都将被解包,然后存储在称为 numbers 的列表中。 如果将该列表素数传递给 function 而不解包,则这些数字将只有一个素数列表,而不是所有素数元素。
首先, * 用于解压旁边的列表,您可以检查 * 的 python 语法并了解它的使用方式,以及您遇到的另一个问题, sum() 中没有逗号,因为它有一个列表() 在它里面, sum() 取一个列表,它的总和并返回它的总和。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.