簡體   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