Python 列表 字典作為函式的引數

2021-08-27 08:21:19 字數 2783 閱讀 8530

這篇筆記主要記錄,列表作為函式引數傳遞時的深淺拷貝問題

#!/usr/bin/env python

# -*- coding: utf-8 -*-

'''這篇筆記主要記錄,列表作為函式引數傳遞時的深淺拷貝問題

'''import copy

def(l=):

def(l=):

defprint_all_list

(a=,b=,c=,log=''):

print log

print

"a:", a

print

"b:", b

print

"c:", c

if __name__ == "__main__":

a = [0, 1, 2, 3, [4, 5, 6], [7, 8, 9]]

b = [0, 1, 2, 3, [4, 5, 6], [7, 8, 9]]

c = [0, 1, 2, 3, [4, 5, 6], [7, 8, 9]]

print_all_list(a,b,c,"原始list:");

print

print_all_list(a,b,c,"對list新增元素,a為賦值、b為淺拷貝、c為深拷貝")

print_all_list(a, b, c, "對list新增元素,a為賦值、b為淺拷貝、c為深拷貝")

## 可見列表、字典等作為函式的引數如果不用拷貝直接賦值,仍然是索引方式

## 字典作為函式引數也類似

''' 輸出:

原始list:

a: [0, 1, 2, 3, [4, 5, 6], [7, 8, 9]]

b: [0, 1, 2, 3, [4, 5, 6], [7, 8, 9]]

c: [0, 1, 2, 3, [4, 5, 6], [7, 8, 9]]

對list新增元素,a為賦值、b為淺拷貝、c為深拷貝

a: [0, 1, 2, 3, [4, 5, 6], [7, 8, 9], [0, 0, 0]]

b: [0, 1, 2, 3, [4, 5, 6], [7, 8, 9]]

c: [0, 1, 2, 3, [4, 5, 6], [7, 8, 9]]

對list新增元素,a為賦值、b為淺拷貝、c為深拷貝

a: [0, 1, 2, 3, [4, 5, 6, 100], [7, 8, 9], [0, 0, 0]]

b: [0, 1, 2, 3, [4, 5, 6, 100], [7, 8, 9]]

c: [0, 1, 2, 3, [4, 5, 6], [7, 8, 9]]

'''

'''

另外,列表作為函式的引數,還有一種情況需要考慮:

字典也有可能發生例如對鍵的值進行修改的情況

'''defget_square_list

(num=0, l=, dic={}):

for i in range(num):

pass

dic[num] = l

print

"list:",l

print

"dict:",dic

print

"l id:",id(l)," | dic id:",id(dic)

defnew_get_square_list

(num=0, l=, dic={}):

ifnot l :

l =

ifnot dic :

dic = {}

for i in range(num):

pass

dic[num] = l

print

"list:",l

print

"dict:",dic

print

"l id:",id(l)," | dic id:",id(dic)

if __name__ == "__main__":

print

"error!!:get_square_list"

get_square_list(2)

get_square_list(3)

'''輸出:

error!!:get_square_list

list: [0, 1]

dict: ## 第一次執行的值是正常的,

l id: 140431170632088 | dic id: 140431170705680

list: [0, 1, 0, 1, 4] ## 第二次的結果累加了前一次的結果。

dict:

l id: 140431170632088 | dic id: 140431170705680 ## 發現兩次呼叫的變數id是同乙個,

## 對變數預設值進行了修改。

'''print

"**優化**"

new_get_square_list(2)

new_get_square_list(5)

'''**優化**

list: [0, 1]

dict:

l id: 140476922003328 | dic id: 140476921956344

list: [0, 1, 4, 9, 16]

dict:

l id: 140476922003328 | dic id: 140476921956344

'''

python列表,字典

1字串處理 s.startswith adfaas s這個字串是不是以adfaas開始 s.endswith adfaas s這個字串是不是以adfaas結束 s.find substring,start end 可指範圍查詢子串,返回索引值,否則返回 1 s.rfind substring,sta...

Python 列表 字典

陣列 只能儲存同一種資料型別的結構 元組tuple 定義列表 定義元組 元組被稱為被帶了緊箍咒的列表,那麼就證明元組與列表的功能類似,只是不如列表強大。元組是不可變的資料型別 不能修改元組中的元素 列表是可變資料型別,可以修改元素。那就有了增刪改查 拿出列表最後乙個元素,最後乙個元素是列表,再拿出列...

列表 字典常用函式

extend iterable 將iterable物件中的元素分別取出追加到列表的最後 lt.extend 鳴人 佐助 櫻 卡卡西 lt.extend lt.extend abcd 注意 extend 函式引數只能接受可迭代物件,123是int值不滿足所以報錯 lt.extend 123 print...