列表切片賦值,小技巧(Python基礎)。


列表的操作相對我還是比較熟悉的,累的時候看一些基礎教程,鞏固加補充知識點。

隨便提示一下,list命令不是函數,是一個類。

列表的切片賦值:

In [1]: name = list('sidian')                                                                                

In [2]: name[2:] = list('ab')                                                                                

In [3]: name                                                                                                 
Out[3]: ['s', 'i', 'a', 'b']

 

簡單的第一個賦值。

name = list('wudian')                                                                                

In [10]: name[3:] = list('python')                                                                           

In [11]: name                                                                                                
Out[11]: ['w', 'u', 'd', 'p', 'y', 't', 'h', 'o', 'n']

 


這是一個超范圍的賦值,感覺有點意思。

In [13]: name = list('liudian')                                                                              

In [14]: name                                                                                                
Out[14]: ['l', 'i', 'u', 'd', 'i', 'a', 'n']

In [15]: name[2:2] = [1,2,3]                                                                                 

In [16]: name                                                                                                
Out[16]: ['l', 'i', 1, 2, 3, 'u', 'd', 'i', 'a', 'n']

 

這個就更加有意思了,在執行的位置寬展列表,我這里寫着[2:2]就是第三個元素整個吧賦值的列表元素填進去了。

 

>>> name = list('badian')
>>> name
['b', 'a', 'd', 'i', 'a', 'n']
>>> name[2:5] = []
>>> name
['b', 'a', 'n']
>>> 

 

>>> name = list('badian')
>>> del name[2:5]
>>> name
['b', 'a', 'n']

 兩種方式都可以實現刪除重點的部分連續列表內元素,我覺的第一種更加裝逼效果好

>>> name = list('jiudian')
>>> name[5:2:-2] = [1,2,3,4,5]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: attempt to assign sequence of size 5 to extended slice of size 2
>>> name[5:2:-2] = [1,2]
>>> name
['j', 'i', 'u', 2, 'i', 1, 'n']
>>> name[2:6:3] = [1,2,3,4,5]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: attempt to assign sequence of size 5 to extended slice of size 2
>>> 

 

 最后我嘗試了一下用負數的步長,或者正數的步長進行測試,發現一單步長設置值以后,就需要對應元素了,你的設置范圍內只能填寫兩個元素,你也只能給兩個元素的列表,多給死給你看。

>>> name[2::-1] = [1,2,3,4,5]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: attempt to assign sequence of size 5 to extended slice of size 3
>>> name[2::-1] = [1,2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: attempt to assign sequence of size 2 to extended slice of size 3

 后續又測試了下,反序的時候,很不方便,多給,少給都不行。

>>> name
['j', 'i', 1, 2, 4, 5, 7, 8, 'n']
>>> name[2:5] = [7,8]
>>> name
['j', 'i', 7, 8, 5, 7, 8, 'n']

最后我試驗了一下正序少給的情況,少給了話,元素列表就少,其實想想也對,你給個[](空列表,他全刪掉了)

 

一圈下來,就是沒有序列的情況下,正序用切片賦值還是非常實用的,要不然在中間位置插入一串列表的元素,還要寫個函數。

一圈下來,就是沒有序列的情況下,正序用切片賦值還是非常實用的,要不然在中間位置插入一串列表的元素,還要寫個函數。
[Yī quān xiàlái, jiùshì méiyǒu xùliè de qíngkuàng xià, zhèng xù yòng qiēpiàn fùzhí háishì fēicháng shíyòng de, yào bùrán zài zhōngjiān wèizhì chārù yī chuàn lièbiǎo de yuánsù, hái yào xiě gè hánshù.]
A lap down, that is, the absence of a sequence, positive sequence with a slice assignment is still very useful, or else insert a string in the middle of the list of elements, but also to write a function.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM