Python連續(xù)賦值需要注意的一些問(wèn)題
Python連續(xù)賦值的注意事項(xiàng)
在python中是可以使用連續(xù)賦值的方式來(lái)一次為多個(gè)變量進(jìn)行賦值的,比如:
a = b = c = 1 a, b, c = 1, 1, 1
這些都可以完成變量的賦值,但是就有一個(gè)問(wèn)題了,比如:
a = 3 a, b = 1, a
如果按照正常的思維邏輯,先進(jìn)行a = 1,在進(jìn)行b = a,最后b應(yīng)該等于1,但是這里b應(yīng)該等于3,因?yàn)樵谶B續(xù)賦值語(yǔ)句中等式右邊其實(shí)都是局部變量,而不是真正的變量值本身,比如,上面例子中右邊的a,在python解析的時(shí)候,只是把變量a的指向的變量3賦給b,而不是a=1之后a的結(jié)果,這一點(diǎn)剛開(kāi)始學(xué)python的人可能容易誤解,再舉一個(gè)Leetcode里鏈表的例子理解就更深了。
假如要對(duì)一個(gè)鏈表進(jìn)行翻轉(zhuǎn),就比如把1—>2->3->4轉(zhuǎn)化為4->3->2->1
對(duì)于這個(gè)問(wèn)題很簡(jiǎn)單,只要反轉(zhuǎn)指針就可以了,假如鏈表結(jié)構(gòu)為:
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
我們可以用很簡(jiǎn)單的三行代碼完成這個(gè)過(guò)程:
def reverseList(self, head):
L = ListNode(float("-inf"))
while head:
L.next, head.next, head = head, L.next, head.next
return L.next
這里的L是指向一個(gè)新建的結(jié)點(diǎn),因?yàn)閜ython沒(méi)有指針的概念,所以用一個(gè)額外的結(jié)點(diǎn)來(lái)代替頭指針,這里的核心代碼就是中間那一行三個(gè)變量的連續(xù)賦值,如果單獨(dú)一句句來(lái)理解的話,最后肯定是想不通的,在這里,假設(shè)head結(jié)點(diǎn)是鏈表串'1->2->3->4'的頭結(jié)點(diǎn),先用新的L結(jié)點(diǎn)的next指針指向head的第一個(gè)結(jié)點(diǎn)‘1',之后將L.next(第一次也就是空)賦給了head的next指針,之后再把head的next指針(注意,這里的next指針還是指向‘2'的,而不是空)賦給head,相當(dāng)于next向前移一位,這一步相當(dāng)于一個(gè)串變成了兩個(gè):
L:‘-inf'->‘1' head:‘2'->‘3'->‘4'->‘5'
Python花樣賦值方法總結(jié)
#連等賦值 a=b=c=1 #拆包賦值 a,b=1,2 #用_占位和*代表不確定個(gè)參數(shù)進(jìn)行拆包賦值 a=range(10) _,b,c,*d=a #迭代賦值 a=(1,2) b=[(i,j)for i in a for j in a] #交換 a,b=b,a
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python使用matplotlib繪制Logistic曲線操作示例
這篇文章主要介紹了Python使用matplotlib繪制Logistic曲線操作,結(jié)合實(shí)例形式詳細(xì)分析了Python基于matplotlib庫(kù)繪制Logistic曲線相關(guān)步驟與實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-11-11
Python+Tkinter實(shí)現(xiàn)RGB數(shù)值轉(zhuǎn)換為16進(jìn)制碼
這篇文章主要為大家詳細(xì)介紹了Python如何利用Tkinter編寫一個(gè)RGB數(shù)值轉(zhuǎn)換為16進(jìn)制碼的小工具,文中的示例代講解詳細(xì),感興趣的小伙伴可以了解一下2023-01-01
Python爬蟲(chóng)之requests基礎(chǔ)用法詳解
這篇文章主要介紹了Python爬蟲(chóng)之requests基礎(chǔ)用法詳解,雖然Python的標(biāo)準(zhǔn)庫(kù)中urllib模塊已經(jīng)包含了平常我們使用的大多數(shù)功能,但是它的API使用起來(lái)讓人感覺(jué)不太友好,而requests庫(kù)使用更簡(jiǎn)潔方便,需要的朋友可以參考下2023-10-10
Python實(shí)現(xiàn)獲取照片的地理定位信息
這篇文章主要為大家詳細(xì)介紹了如何使用 Python 的 PIL(Python Imaging Library)庫(kù)實(shí)現(xiàn)從 JPEG 圖像中獲取經(jīng)緯度信息,需要的可以參考一下2023-05-05
python代碼如何調(diào)出cmd命令行窗口并在cmd窗口中執(zhí)行指定的命令
這篇文章主要介紹了python代碼如何調(diào)出cmd命令行窗口并在cmd窗口中執(zhí)行指定的命令問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
在Docker上開(kāi)始部署Python應(yīng)用的教程
這篇文章主要介紹了在Docker上開(kāi)始部署Python應(yīng)用的教程,Docker是時(shí)下最火爆的虛擬機(jī),正在被各大云主機(jī)服務(wù)商所采用,需要的朋友可以參考下2015-04-04

