繁体   English   中英

在嵌套列表中查找变量的索引

[英]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,它是元组的迭代器,其中每个传递的迭代器中的第一个项目配对在一起,然后迭代第二个传递的项目。

如果传递的迭代器具有不同的长度,则具有最少项的迭代器决定新迭代器的长度。

https://realpython.com/python-zip-function/#:~:text=Python's%20zip()%20function%20is,%2C%20sets%2C%20and%20so%20on

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM