1. 程式人生 > 實用技巧 >JPA(Java Persistence API)學習十二(多對多對映)

JPA(Java Persistence API)學習十二(多對多對映)

List

和String型別一樣可索引和分片,同時可修改資料。索引下標從0開始

lst = ['hello',1,1.0,False,'world']
print(lst)
['hello', 1, 1.0, False, 'world']

常用函式

名稱 說明 用法
append 在末尾新增新的元素 list.append(4)
clear 清除列表中所有的資料 list.clear()
copy 淺拷貝 list.copy()
count 檢視元素在列表中出現的次數 list.count(2)
extend 在末尾一次性追加另外一個列表中的多個值 list.extend([1,2])
index 從指定範圍的列表中指出某個值第一個匹配的下標索引;若不指定範圍,則預設是整個列表 list.index(object[, start][, stop])
insert 在下標處插入元素,不覆蓋原本資料。原資料向後順延 list.insert(0,1)
pop 移除列表中指定下標處的元素(預設移除最後一個元素),並返回移除的資料 list.pop()
remove 移除列表中的某個元素第一個匹配結果 list.remove(2)
reverse 將列表中的元素倒序,操作原列表,不返回新的列表 list.reverse()
sort 將list中的元素進行升序排列(預設reverse=False),當reverse為True時,為降序排列 list.sort(reverse=False)

列表可修改,有很多方法,如:
刪除元素: pop(有返回值),del(無法回值)

>>> a = [0,1,2,3,4]
>>> del a[-1]     #del刪除沒有返回值
>>> a
[0, 1, 2, 3]
>>> del a[1:3]  #刪除index範圍
>>> a
[0, 3]
>>> del a      #刪除整個變數
>>> a
[]

>>> a = [0,1,2,3,4]
>>> a.pop()      #不填寫index,則預設index為-1。有返回值
4
>>> b = a.pop(1)     #刪除指定index
>>> print(a)
[0,2,3]
>>> print(b)
1

如果你要從列表中刪除一個元素,且不再以任何方式使用它,就使用del語句;如果你要在刪除元素後還能繼續使用它,就使用pop

根據值刪除元素remove

>>> a = [1,2,3]
>>> a.remove(2)
>>> print(a)
[1,3]

拷貝

1、賦值拷貝/引用拷貝

>>> a = [1,2,3]
>>> b = a
>>> a.append(4)
>>> print(b)
[1,2,3,4]

指向同一個記憶體地址,類似快捷方式

2、淺拷貝

>>> a = [1,2,3,[4,5]]
>>> b  = a.copy()
>>> a.append(9)
>>> print(a,b)
>>> print(id(a[3]),id(a))
>>> print(id(b[3]),id(b))
[1, 2, 3, [4, 5], 9] [1, 2, 3, [4, 5]]
139912453078920 139912453106184
139912453078920 139912453165192

>>> a[3].append(6)
>>> print(a,b)
[1, 2, 3, [4, 5, 6]] [1, 2, 3, [4, 5, 6]]

相當於
b = a[::]

注意: 只適用於一維列表

不完全記憶體拷貝,對於一維列表重新開闢了一塊記憶體空間,但若出現二維列表的情況下,因為二維列表存放在一維列表中存放的是列表地址,因此若出現二維列表相當於間接的引用了同一塊記憶體區域

3、深度拷貝

import copy
list1 = copy.deepcopy(list1)
>>> import copy
>>> a = [1,2,3,[4,5]]
>>> b = copy.deepcopy(a)
>>> a[3][1] = 6
>>> print(a,b)
[1, 2, 3, [4, 6]] [1, 2, 3, [4, 5]]

完全記憶體拷貝,相當於將list1中的所有列表中元素重新複製了一份,對於多維也重新開闢了記憶體空間,因此不會出現記憶體共用的情況