Python range 數據類型 [學習 Python 必備基礎知識][看此一篇就夠了][range()][range 元素元素檢測、元素索引查找、切片、負索引][檢測 range 對象是否相等]

来源:https://www.cnblogs.com/manongajie/archive/2020/05/08/12853365.html
-Advertisement-
Play Games

`range` 類型表示不可變的數字序列,通常用於在 `for` 迴圈中迴圈指定的次數。 range 類型相比常規 list 或 tuple 的優勢在於一個 range 對象總是占用固定數量的(較小)記憶體,不論其所表示的範圍有多大(因為它只保存了 start, stop 和 step 值,並會根據需... ...


您的“關註”和“點贊”,是信任,是認可,是支持,是動力......

如意見相佐,可留言。
本人必將竭盡全力試圖做到準確和全面,終其一生進行修改補充更新。

在這裡插入圖片描述

目錄

1 range 類型概述

range 類型表示不可變的數字序列,通常用於在 for 迴圈中迴圈指定的次數。

range 類型相比常規 list 或 tuple 的優勢在於一個 range 對象總是占用固定數量的(較小)記憶體,不論其所表示的範圍有多大(因為它只保存了 start, stop 和 step 值,並會根據需要計算具體單項或子範圍的值)。

2 range() 函數

使用格式如下所示:

class range(stop)
class range(start, stop[, step])

對以上格式說明,

  • range 構造器的參數必須為整數(可以是內置的 int 或任何實現了 index 特殊方法的對象)。

  • 如果省略 step 參數,其預設值為 1。 如果省略 start 參數,其預設值為 0,如果 step 為零則會引發 ValueError

  • 如果 step 為正值,確定 range r 內容的公式為 r[i] = start + step*i 其中 i >= 0r[i] < stop。如果 step 為負值,確定 range 內容的公式仍然為 r[i] = start + step*i,但限制條件改為 i >= 0 且 r[i] > stop。如果 r[0] 不符合值的限制條件,則該 range 對象為空。 range 對象確實支持負索引,但是會將其解讀為從正索引所確定的序列的末尾開始索引。

  • 元素絕對值大於 sys.maxsize 的 range 對象是被允許的,但某些特性 (例如 len()) 可能引發 OverflowError

  • stop 參數:不包括stop本身。

舉例如下所示:

>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(1, 11))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(range(0, 30, 5))
[0, 5, 10, 15, 20, 25]
>>> list(range(0, 10, 3))
[0, 3, 6, 9]
>>> list(range(0, -10, -1))
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> list(range(0))
[]
>>> list(range(1, 0))
[]

3 range 元素檢測、元素索引查找、切片、負索引介紹

range 對象實現了 collections.abc.Sequence ABC,提供如包含檢測、元素索引查找、切片等特性,並支持負索引 ,舉例如下所示:

>>> r = range(0, 20, 2)
>>> r
range(0, 20, 2)
>>> 11 in r
False
>>> 10 in r
True
>>> r.index(10)
5
>>> r[5]
10
>>> r[:5]
range(0, 10, 2)
>>> r[-1]
18

4 使用 ==!= 檢測 range 對象是否相等

使用 ==!= 檢測 range 對象是否相等是將其作為序列來比較。

也就是說,如果兩個 range 對象表示相同的值序列就認為它們是相等的。

請註意:比較結果相等的兩個 range 對象可能會具有不同的 start, stop 和 step 屬性。舉例如下所示:

range(0) == range(2, 1, 3)
range(0, 3, 2) == range(0, 4, 2)

5 版本區別和版本新功能(部分)

  • 3.2 版更改: 實現 Sequence ABC。 支持切片和負數索引。 使用 int 對象在固定時間內進行成員檢測,而不是逐一迭代所有項。

  • 3.3 版更改: 定義 ==!= 以根據 range 對象所定義的值序列來進行比較(而不是根據對象的標識)。

  • 3.3 新版功能: start, stopstep 屬性。

【文章其它地址】

微信公眾號:碼農阿傑

CSDN 博客

【參考資料】

Python 官網

Python 3.8.2 documentation


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Lippman在《深度探索C++對象模型》的前言中寫道: I have heard a number of people over the years voice opinions similar to those of your colleagues. In every case, those o ...
  • 1 簡介 是面向對象的編程語言,只要使用它,就需要創建對象。Java創建對象有六種方法,實際常用的不會這麼多,這裡權當是記錄一下。 2 六種方法 (1)使用new關鍵字 (2)反射之Class類newInstance() (3)反射之Constructor類的newInstance() (4)Obj ...
  • 問題 設計一個person類,條件如下: 1)定義protected屬性:name(姓名)、age(年齡)、sex(性別) 2)定義static靜態屬性:num(用於計算已實例化的人數) 3)定義構造函數,實現在對象創建時輸出“I am a person”,並對num加1; 4)定義析構函數,在對象 ...
  • `Apache Dubbo Java RPC` 框架,它提供了三大核心能力:面向介面的遠程方法調用,智能容錯和負載均衡,以及服務自動註冊和發現。 註意,是 ,不再是 。簡單來說就是 將 移交給 開源社區進行維護。參見 "dubbo spring boot project" "Spring Boot ...
  • 五一假期大雄看了一本《java併發編程藝術》,瞭解了線程池的基本工作流程,竟然發現線程池工作原理和互聯網公司運作模式十分相似。 線程池處理流程 原理解析 互聯網公司與線程池的關係 這裡用一個比喻來描述一下線程池,中間有一些名詞你可能不是太清楚,後邊源碼解析的部分會講到。 你可以把 線程池 看作是一個 ...
  • "python3_zipfile_創建壓縮文件" 轉載註明來源: "本文鏈接" 來自 "osnosn的博客" ,寫於 2020 05 08. ZipFile的 預設是 ZIP_STORED(僅存儲不壓縮)。 所以要指定為 (zip演算法),或 (lzma演算法,壓縮率高,就是慢了點) 要py3.7以上才 ...
  • 1 簡介 是`Spring spring core ReflectionTestUtils spring test ReflectionUtils ReflectionTestUtils`,能增加我們的便利性。 假設我們需要創建一個類,但它的某些成員變數是私有的,並且沒有提供公共的 方法,而我們無法 ...
  • 在前面的篇幅中,我們對認證和授權流程大致梳理了一遍。在這個過程中我們一直都是使用系統生成的預設頁面,登錄成功後也是直接調轉到根路徑頁面。而在實際的開發過程中,我們是需要自定義登錄頁面的,有時還會添加各類驗證機制,在登錄成功後會跳轉至指定頁面,還會進行各種美化,甚至是前後端分離的方式。這時,就需要我們... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...