簡體   English   中英

在python的for循環中附加附件

[英]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]>3True 因此,您擁有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM