[英]Append enclosure in a for loop in python
我不明白為什么方括號中的附加外殼不能與增量點一起使用,但是在沒有增量點的情況下卻可以使用。 也許,它越界了?
在這里,在方括號中,它存在增量點“ [m + 1]”,但在python中的“ for循環”中無法正常工作。 lst = []對於xrange(0,5,1)中的m:rs = [0,0,0,3] rg = range(5)lst.append(rg [m + 1],如果rs == 0或rg [m + 1]> 3否則0)
雖然在方括號中,它不存在增量點“ [m]”,但在python中的“ for循環”中正常工作。
lst=[]
for m in xrange(0,5,1):
rs=[0,0,0,3]
rg=range(5)
lst.append(rg[m+1] if rs==0 or rg[m]<3 else 0)
...以及另一個示例,通過將符號“ <”更改為““>”的方向。 它無法正常工作。
lst=[]
for m in xrange(0,5,1):
rs=[0,0,0,3]
rg=range(5)
lst.append(rg[m+1] if rs==0 or rg[m]>3 else 0)
我找到了答案!
內聯語句首先驗證右側,然后驗證左側。 內聯語句的左部分可能會錯誤地聲明,直到左部分得到驗證。 因此,您可能有一個if內聯語句,多數情況下,右側是TRUE,但左側可能仍然存在問題!
你怎么檢查這個? 在這種情況下,您必須插入其他邏輯檢查嗎? 這是唯一的解決方案?
例如,這將始終驗證右邊的部分,結果為0,但永遠不會驗證左邊的部分。
r=[0,1]
a=[2,3]
r[99999] if a[1]==2 else 0
m
從0到4。
rg
有5個元素,索引為0到4。
當m
為4時,您嘗試將rg[m+1]
附加到lst
(取決於條件),這將嘗試訪問超出范圍的rg[5]
,因為rg
沒有這樣的索引。
for m in xrange(0,5,1)
for m in iter([0,1,2,3,4])
= for m in iter([0,1,2,3,4])
rg=range(5)
= rg=[0,1,2,3,4]
如果m = 4
則條件rg[m]>3
為True
。 因此,您擁有lst.append(rg[4+1])
。 rg[5]
超出rg
范圍
P / S:當rs=[0,0,0,3]
時,如何檢查rs == 0
? 它總是返回False
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.