📜  在Python中解包参数

📅  最后修改于: 2022-05-13 01:54:32.391000             🧑  作者: Mango

在Python中解包参数

如果你已经使用Python几天了,你可能知道解包元组。对于初学者来说,您可以将元组或列表解压缩为单独的变量,但事实并非如此。在Python中还有很多东西需要解压。

在不存储值的情况下解包:您可能会遇到一种情况,您可能不需要元组中的所有值,但您只想存储其中一些值。在这种情况下,您可以使用_来忽略某些值。现在,让我们将它与上面的 * 实现结合起来

示例 1:

Python3
# unpacking python tuple using _ 
  
# first and last value will be ignored 
# and won't be stored second will be 
# assigned to b and remaining will be
# assigned to x 
_, b, *x, _ = ("I ", "love ", "Geeks ",
               "for ", "Geeks ", 3000) 
  
# print details 
print(b)
print(x)


Python3
# unpacking python tuple using _* 
  
# first second and last value will be stored
# remaining will be ignored by using *_
a, b, *_, c = ("I ", "love ", "Geeks ",
               "for ", "Geeks ", 3000) 
  
# print details 
print(a)
print(b) 
print(c)


Python3
def arithmetic_operations(arr: list):
  MAX = max(arr)
  MIN = min(arr)
  SUM = sum(arr)
  AVG = SUM/len(arr)
    
  return (SUM, AVG, MAX, MIN)
  
if __name__ == '__main__':
  arr = [5, 8, 9, 12, 50, 3, 1]
    
  # for all data
  sum_arr, avg_arr, max_arr, min_arr = arithmetic_operations(arr)
  print("CASE 1 ", sum_arr, avg_arr, max_arr, min_arr)
    
  #for only avg and max
  _, avg_arr, max_arr, _ = arithmetic_operations(arr)
  print("CASE 2 ", avg_arr, max_arr)
    
  # for only sum and min
  sum_arr, *_, min_arr = arithmetic_operations(arr)
  print("CASE 3 ", sum_arr, min_arr)


输出:

love 
['Geeks ', 'for ', 'Geeks ']

解释:

注意这里第一个和最后一个变量设置为下划线(_)。在Python中,下划线用于忽略值或丢弃变量,这意味着不会存储“I”和 3000。

示例 2:

Python3

# unpacking python tuple using _* 
  
# first second and last value will be stored
# remaining will be ignored by using *_
a, b, *_, c = ("I ", "love ", "Geeks ",
               "for ", "Geeks ", 3000) 
  
# print details 
print(a)
print(b) 
print(c)

输出:

I 
love 
3000

解释:

请注意,在ab中,第一个和第二个值被分配,而在c中,最后一个值被分配。那么,第三、第四、第五呢?好吧,它们只是被忽略了,因为我们使用了*_ 。如果我们将 * 与变量一起使用,那么所有这些都将作为列表进入该变量。因为,我们使用 _ 而不是变量,所以整个单词列表被完全忽略。

示例 3:嗯,这里的想法是创建一个函数,该函数将接收一个数字列表并在列表中返回其总和、平均值、最大值和最小值。然后,我们将重用该函数以获得不同用例所需的功能。

Python3

def arithmetic_operations(arr: list):
  MAX = max(arr)
  MIN = min(arr)
  SUM = sum(arr)
  AVG = SUM/len(arr)
    
  return (SUM, AVG, MAX, MIN)
  
if __name__ == '__main__':
  arr = [5, 8, 9, 12, 50, 3, 1]
    
  # for all data
  sum_arr, avg_arr, max_arr, min_arr = arithmetic_operations(arr)
  print("CASE 1 ", sum_arr, avg_arr, max_arr, min_arr)
    
  #for only avg and max
  _, avg_arr, max_arr, _ = arithmetic_operations(arr)
  print("CASE 2 ", avg_arr, max_arr)
    
  # for only sum and min
  sum_arr, *_, min_arr = arithmetic_operations(arr)
  print("CASE 3 ", sum_arr, min_arr)

输出:

CASE 1  88 12.571428571428571 50 1
CASE 2  12.571428571428571 50
CASE 3  88 1

上面的代码用于演示如何让一个函数返回多个值,但一次只使用必要的值而不浪费内存。