日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中一个范围怎么表示_我应该如何处理Python中的包含范围?

發布時間:2025/3/12 python 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中一个范围怎么表示_我应该如何处理Python中的包含范围? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我在一個領域工作,在這個領域中,范圍通常被包括在內地描述。我有人類可讀的描述,例如from A to B,它表示包含兩個端點的范圍,例如from 2 to 4表示2, 3, 4。

在Python代碼中使用這些范圍的最佳方法是什么?以下代碼可用于生成包含范圍的整數,但我還需要執行包含切片操作:def inclusive_range(start, stop, step):

return range(start, (stop + 1) if step >= 0 else (stop - 1), step)

我看到的唯一完整解決方案是每次使用+ 1(或- 1)或切片表示法(例如range(A, B + 1)、l[A:B+1]、range(B, A - 1, -1))時顯式使用+ 1(或- 1)。這種重復真的是處理包含范圍的最佳方法嗎?

編輯:感謝L3viathan的回答。寫一個inclusive_slice函數來補充inclusive_range當然是一個選項,盡管我可能會這樣寫:def inclusive_slice(start, stop, step):

...

return slice(start, (stop + 1) if step >= 0 else (stop - 1), step)

這里的...表示處理負索引的代碼,這在與切片一起使用時并不簡單-注意,例如,如果slice_to == -1,l3viaan的函數會給出不正確的結果。

然而,似乎一個inclusive_slice函數會很難使用-l[inclusive_slice(A, B)]真的比l[A:B+1]更好嗎?

有沒有更好的方法來處理包含的范圍?

編輯2:感謝您提供新答案。我同意Francis和Corley的觀點,即改變slice操作的含義,無論是全局的還是某些類的,都會導致嚴重的混淆。因此,我現在傾向于編寫一個inclusive_slice函數。

為了回答我之前編輯的問題,我得出的結論是,使用這樣的函數(例如l[inclusive_slice(A, B)])比手動加/減1(例如l[A:B+1])要好,因為它允許在一個地方處理邊案例(例如B == -1和B == None)。我們能減少使用這個函數時的尷尬嗎?

編輯3:我一直在考慮如何改進用法語法,它目前看起來像l[inclusive_slice(1, 5, 2)]。特別是,如果創建的包含切片類似于標準切片語法,那將是很好的。為了允許這樣做,而不是inclusive_slice(start, stop, step),可能有一個函數inclusive將切片作為參數。inclusive的理想用法語法是行1:l[inclusive(1:5:2)] # 1

l[inclusive(slice(1, 5, 2))] # 2

l[inclusive(s_[1:5:2])] # 3

l[inclusive[1:5:2]] # 4

l[1:inclusive(5):2] # 5

不幸的是,Python不允許這樣做,它只允許在[]中使用:語法。inclusive因此必須使用語法2或3調用(其中s_的作用類似于the version provided by numpy)。

其他的可能性是使inclusive成為一個具有__getitem__的對象,允許語法4,或者只將inclusive應用于切片的stop參數,如語法5。不幸的是,我不相信后者能夠工作,因為inclusive需要了解step值。

在可行的語法中(原始的l[inclusive_slice(1, 5, 2)],加上2,3和4),哪一個是最好的?或者還有其他更好的選擇嗎?

最后編輯:感謝大家的回復和評論,這非常有趣。我一直都是Python“單向”哲學的粉絲,但這個問題是由Python的“單向”和問題領域所禁止的“單向”之間的沖突引起的。我確實對語言設計中的TIMTOWTDI有些欣賞。

因為我給出了第一個也是最高票數的答案,所以我把獎金頒給了L3viathan。

總結

以上是生活随笔為你收集整理的python中一个范围怎么表示_我应该如何处理Python中的包含范围?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。