【问题标题】:finding the index of a variable in a nested list在嵌套列表中查找变量的索引
【发布时间】:2020-08-01 16:29:52
【问题描述】:
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() 中的两个元素之间没有逗号或分隔符

非常感谢

【问题讨论】:

    标签: python syntax


    【解决方案1】:

    首先,* 用于解压它旁边的列表,您可以检查 * 的 python 语法并了解它的使用方式,以及您遇到的另一个问题,因为 sum() 中没有逗号里面有一个 list() , sum() 取一个 list 的总和并返回它的总和。

    【讨论】:

      【解决方案2】:

      为了遍历嵌套列表,我通常使用 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() 函数返回一个 zip 对象,它是元组的迭代器,其中每个传递的迭代器中的第一项配对在一起,然后每个传递的迭代器中的第二项配对在一起,依此类推。

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

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

      sum(iterable, start) 函数返回一个数字,即迭代中所有项目的总和。

      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
      

      * 也可用于打开容器。最简单的例子是我们有列表、元组或字典形式的数据,而函数接受可变参数:

      
      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() 接受可变参数,所以我们需要解压缩列表数据并将其传递给该函数。在这种情况下,如果我们将素数作为 *primes 传递,则素数列表的每个元素都将被解包,然后存储在称为 numbers 的列表中。如果将该列表素数传递给函数而不解包,则数字将只有一个素数列表,而不是素数的所有元素。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-17
        • 1970-01-01
        • 2016-02-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-24
        相关资源
        最近更新 更多