久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術(shù)文章
文章詳情頁

Python連續(xù)賦值需要注意的一些問題

瀏覽:4日期:2022-06-17 15:50:08
Python連續(xù)賦值的注意事項(xiàng)

在python中是可以使用連續(xù)賦值的方式來一次為多個(gè)變量進(jìn)行賦值的,比如:

a = b = c = 1a, b, c = 1, 1, 1

這些都可以完成變量的賦值,但是就有一個(gè)問題了,比如:

a = 3a, b = 1, a

如果按照正常的思維邏輯,先進(jìn)行a = 1,在進(jìn)行b = a,最后b應(yīng)該等于1,但是這里b應(yīng)該等于3,因?yàn)樵谶B續(xù)賦值語句中等式右邊其實(shí)都是局部變量,而不是真正的變量值本身,比如,上面例子中右邊的a,在python解析的時(shí)候,只是把變量a的指向的變量3賦給b,而不是a=1之后a的結(jié)果,這一點(diǎn)剛開始學(xué)python的人可能容易誤解,再舉一個(gè)Leetcode里鏈表的例子理解就更深了。

假如要對一個(gè)鏈表進(jìn)行翻轉(zhuǎn),就比如把1—>2->3->4轉(zhuǎn)化為4->3->2->1

對于這個(gè)問題很簡單,只要反轉(zhuǎn)指針就可以了,假如鏈表結(jié)構(gòu)為:

class ListNode: def __init__(self, x):self.val = xself.next = None

我們可以用很簡單的三行代碼完成這個(gè)過程:

def reverseList(self, head):L = ListNode(float('-inf'))while head: L.next, head.next, head = head, L.next, head.nextreturn L.next

這里的L是指向一個(gè)新建的結(jié)點(diǎn),因?yàn)閜ython沒有指針的概念,所以用一個(gè)額外的結(jié)點(diǎn)來代替頭指針,這里的核心代碼就是中間那一行三個(gè)變量的連續(xù)賦值,如果單獨(dú)一句句來理解的話,最后肯定是想不通的,在這里,假設(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è)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 延边| 常山县| 卓资县| 磴口县| 临夏县| 翁牛特旗| 万荣县| 红安县| 浦东新区| 西城区| 修水县| 郧西县| 舞阳县| 吐鲁番市| 额尔古纳市| 江山市| 慈溪市| 历史| 江达县| 钟山县| 天镇县| 雷山县| 临湘市| 八宿县| 绥江县| 三原县| 新沂市| 武平县| 沅江市| 尚义县| 即墨市| 江阴市| 施秉县| 高安市| 贺州市| 宣恩县| 于都县| 兴国县| 察哈| 云霄县| 探索|