在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
解释:
请注意,在a和b中,第一个和第二个值被分配,而在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
上面的代码用于演示如何让一个函数返回多个值,但一次只使用必要的值而不浪费内存。