日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

python數(shù)組的復制與列表中的pop_python

更新時間: 2022-06-07 編程語言

讓我們看看如何在 Python 中復制數(shù)組。 有 3 種復制數(shù)組的方法:

  • 只需使用賦值運算符。
  • 淺拷貝
  • 深拷貝

1 使用賦值運算符

我們可以使用賦值運算符 (=) 創(chuàng)建數(shù)組的副本。

語法:

new_arr = old_ arr

在 Python 中,Assignment 語句不復制對象,它們在目標和對象之間創(chuàng)建綁定。 當我們使用 = 運算符時,用戶認為這會創(chuàng)建一個新對象; 好吧,事實并非如此。 它只創(chuàng)建一個共享原始對象引用的新變量。

示例:

from numpy import *??????????????????
?
arr1 = array([2, 6, 9, 4])????????????
?
print(id(arr1))
?
arr2 = arr1?????????????????????????
?
print(id(arr2))
?
arr1[1] = 7????????????????????????
?
print(arr1)
print(arr2)

python:數(shù)組的復制與列表中的pop()_賦值運算符

我們可以看到兩個數(shù)組都引用了同一個對象。

2 淺拷貝

一個淺副本意味著構(gòu)造一個新的集合對象,然后用對原始中找到的子對象的引用填充它。 復制過程不會重復,因此不會創(chuàng)建子對象本身的副本。 在淺拷貝的情況下,對象的引用被復制在另一個對象中。 這意味著對對象的副本所做的任何更改都會在原始對象中反映。 我們將使用視圖view()函數(shù)來實現(xiàn)淺副本。

示例:

from numpy import *?????????????????
??
arr1 = array([2, 6, 9, 4])
?
print(id(arr1))
?
arr2 = arr1.view()?
?
print(id(arr2))
??
arr1[1] = 7???????????????????????
??
print(arr1)
print(arr2)

python:數(shù)組的復制與列表中的pop()_數(shù)組_02

這次雖然2個數(shù)組引用了不同的對象,但在更改一個數(shù)組值的時候,另一個的值也被更改。

3 深度拷貝

深度拷貝是一個過程,其中復制過程遞歸地發(fā)生。 它意味著首先構(gòu)建一個新的存儲對象,然后用原稿中找到的子對象的副本遞歸地填充它。 在深度拷貝的情況下,將對象的副本復制到另一個對象中。 這意味著對對象的副本所做的任何更改都不反映在原始對象中。 我們將使用copy()函數(shù)來實現(xiàn)深度副本。

示例:

from numpy import *?????????????????
??
arr1 = array([2, 6, 9, 4])
?
print(id(arr1))
?
arr2 = arr1.copy()
?
print(id(arr2))
??
arr1[1] = 7???????????????????????
??
print(arr1)
print(arr2)

python:數(shù)組的復制與列表中的pop()_數(shù)組_03

這次在一個數(shù)組中所做的更改不會映射在其他數(shù)組中。

4 深度拷貝進階

如果您正在處理numpy矩陣,則numpy.copy()將為您提供深度拷貝。 但是,如果您的矩陣是列表的列表,那么請考慮旋轉(zhuǎn)圖像90度的任務中使用以下方法:

示例:

import copy
?
def rotate_matrix(image):
????copy_image_one = copy.deepcopy(image)
????print("Original", matrix)
????print("Copy of original", copy_image_one)
????N = len(matrix)
?
????for row in range(N):
????????for column in range(N):
????????????copy_image_one[row][column] = image[row][N-column-1]
?
????print("After modification")
????print("Original", matrix)
????print("Copy", copy_image_one)
?
????copy_image_two = [list(row) for row in copy_image_one]
?
????for row in range(N):
????????for column in range(N):
????????????copy_image_two[column][row] = copy_image_one[row][column]
?
????return copy_image_two
?
?
if __name__ == "__main__":
????matrix = [[1, 2, 3],
??????????????[4, 5, 6],
??????????????[7, 8, 9]]
????print("Rotated image", rotate_matrix(matrix))

python:數(shù)組的復制與列表中的pop()_數(shù)組_04

Python列表POP()是Python中的內(nèi)置函數(shù),該函數(shù)刪除并返回列表或給定索引值的最后一個值。

語法:

list_name.pop(index)

參數(shù):

  • index(可選) - 彈出并刪除索引處的值。 如果未給出索引,則會彈出并刪除最后一個元素。

返回值:列表中的最后一個值或給定的索引值。

例外:當索引超出范圍時,它會返回IndexError

例一:

list1 = [ 1, 2, 3, 4, 5, 6 ]
?
print(list1.pop())
?
print("New List after pop : ", list1, "\n")
?
list2 = [1, 2, 3, ('cat', 'bat'), 4]
?
print(list2.pop())
print(list2.pop())
print(list2.pop())
?
print("New List after pop : ", list2, "\n")

python:數(shù)組的復制與列表中的pop()_數(shù)組_05

例二:

list1 = [ 1, 2, 3, 4, 5, 6 ]
?
print(list1.pop(), list1)

print(list1.pop(0), list1)

python:數(shù)組的復制與列表中的pop()_賦值運算符_06

例三:

list1 = [ 1, 2, 3, 4, 5, 6 ]
print(list1.pop(8))

python:數(shù)組的復制與列表中的pop()_python_07

例四:

fruit = [['Orange','Fruit'],['Banana','Fruit'], ['Mango', 'Fruit']]
consume = ['Juice', 'Eat']
possible = []

for item in fruit :

????for use in consume :
?????????
????????item.append(use)
????????possible.append(item[:])
????????item.pop(-1)
print(possible)

python:數(shù)組的復制與列表中的pop()_python_08

原文鏈接:https://blog.51cto.com/u_14857544/5177095

欄目分類
最近更新