• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • 【Python】Python中的range你真的了解嗎

    Python中的range你真的了解嗎

    鏈接:
    range的官方文檔
    為什么range不是迭代器?range到底是什么類型?

    在看了諸多博文之后,終于對range這個神奇的物種有了初步了解,其具有以下特點:

    • range是一種基本類型。官方文檔指出:python中有三種基本的序列類型:列表、元組和范圍(range)對象
    • range 是可迭代對象而不是迭代器
    • range對象的值不可改變

    接下來探索以下range具體迭代用法。

    
    """生成一個range類型的可迭代對象:"""
    >>> a = range(3)
    
    >>> type(a)
    range
    
    """可以看到a的類型是range,有點懵,看下幫助文檔"""
    >>> print(a.__doc__)
    
    range(stop) -> range object  
    range(start, stop[, step]) -> range object  
    
    Return an object that produces a sequence of integers from start (inclusive) to stop (exclusive) by step.  range(i, j) produces i, i+1, i+2, ..., j-1. 
    start defaults to 0, and stop is omitted!  range(4) produces 0, 1, 2, 3. 
    These are exactly the valid indices for a list of 4 elements. 
    When step is given, it specifies the increment (or decrement).
    """文檔介紹了一下range的用法,并沒有細說"""
    
    
    """接著在PyCharm里用`.`的方法可以看到,a具有方法:start,stop,step""
    >>> a.start
    0
    >>> a.stop
    3
    >>> a.step
    1
    
    """
    接著對a進行迭代
    因為a是可迭代對象,需要使用iter()函數將a轉為迭代器,接著使用next()方法進行迭代取值
    """
    
    >>> b = iter(a)   
    
     """現在b終于是range可迭代對象了,現在用type查看一下:"""
     
    >>> type(b)
    range_iterator
    
    """迭代"""
    
    >>> next(b)
    0
    
    >>> next(b)
    1
    
    >>> next(b)
    2
    
    >>> next(b)
    
    StopIteration    Traceback (most recent call last)
    <ipython-input-57-adb3e17b0219> in <module>()
    ----> 1 next(b)
    
    到這里報錯,因為迭代已經結束
    

    實際調試過程圖:
    在這里插入圖片描述

    版權聲明:本文為hi_xtm原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/hi_xtm/article/details/108809391

    智能推薦

    @Autowierd &&& @Resource 你真的了解嗎

    1.@Autowierd 使用byType注入,默認情況下要求依賴必須存在;配置required=false表示依賴可為null 下面代碼第一個注入是會報錯的,編輯器是會有紅色提示。 因為代碼中沒有這樣的bean,截圖也能看的出來。 2.@Resource 按照ByName自動注入,@Resource有兩個重要的屬性:name和type,而Spring將@Resource注解的 name屬性解析為...

    ViewStub你真的了解嗎

    目錄介紹 01.什么是ViewStub 02.ViewStub構造方法 03.inflate()方法解析 04.WeakReference使用 05.ViewStub為何無大小 06.ViewStub為何不繪制 07.可以多次inflate()嗎 08.ViewStub不支持merge 09.ViewStub使用場景 10.ViewStub總結分析 好消息 博客筆記大匯總【16年3月到至今】,包括...

    指針你真的了解嗎

    ** 先看一段代碼 運行結果 - - 指針指向的地址 - 指針指向地址的值 - - 指針的地址 **...

    ArrayList、LinkedList 你真的了解嗎?

    1、 前言 經常在面試時,被問到集合的概念,集合 List、Map、Set 等底層設計以及其使用場景與注意細節。但大部分人的回答都是千篇一律,跟網上的答案一模一樣,這是致命滴。其實,大家都錯了,尤其是網上,更是誤導大家,詳細原因,且聽我來分析。 2、集合 List 2.1 大家心中的 List 在廣大的網友心中,List 是一個緩存數據的容器,是 JDK 為開發者提供的一種集合類型。面試時,被問到...

    HashMap 你真的了解嗎?

    一. hashmap簡介 HashMap是基于哈希表的Map接口的非同步實現。此實現提供所有可選的映射操作,并允許使用null值和null鍵。此類不保證映射的順序,特別是它不保證該順序恒久不變。 HashMap 是一個散列表,它存儲的內容是鍵值對(key-value)映射。 HashMap 繼承于AbstractMap,實現了Map、Cloneable、java.io.Serializable接口...

    猜你喜歡

    String你真的了解嗎?

    String你了解多少 String很另類 聲明一個字符串發生了什么 證明上述觀點 String很另類 String字符串太重要,以至于Java對它特別對待。 String s1 = “ABC”; Java是一個面向對象的語言,基本類型用=直接賦值字面量,創建一個對象都是new Xxx(),那么String是基本類型?很明顯不是。 聲明一個字符串發生了什么 從編譯到運行 為...

    你真的了解hashmap嗎?

    整理了一些關于hashmap的面試題。 為什么在鏈式長度為8的時候才構建紅黑樹 長度為8,鏈表轉樹,長度為6,樹轉鏈表。。中間有個差值,還可以防止鏈表和樹頻繁轉換。假設8以上轉為樹,8以下轉為鏈表,那么一個hashmap如果不停的插入刪除,鏈表長度在8左右徘徊,就會不停的樹轉鏈表,鏈表轉樹,效率很低。 hashmap 為什么要2的n次冪長度 接下來,我們分析下為什么哈希表的容量一定要是2的整數次冪...

    你真的了解過度繪制嗎?

    本文主要談談Android過度繪制相關的知識點,并結合云課堂企業版首頁優化過度繪制的實踐總結一些與之相關的問題,與君共享,互相進步~ 本文將按照如下結構展開 0x00 表面問題的產生 在我的小米2s測試機,打開云課堂企業版,順手打開了過度繪制發現了驚人的一幕 目前企業版線上版本才1.8.2版本,這么年輕的app,但是作為門面的三個tab竟然過度繪制如此嚴重(中間那張灰色的圖是測試數據),沒有道理不...

    你真的了解Map嗎?

    目錄 Map 常用方法: 哈希表(HashTable) 哈希沖突 什么是哈希沖突? 沖突避免 解決沖突 沖突嚴重時的解決辦法 TreeMap和HashMap HashMap總結及其解讀其底層源碼(JDK1.8) 1.初始容量為16 2.HashMap的最大容量為2^30 3.何時鏈表和紅黑樹相互轉化 4、HashMap桶中放置的節點---該節點是一個單鏈表的結構 5、 哈希函數 6、構造函數 7、...

    【JUC】CountDownLatch你真的了解嗎?

    背景 在平時的開發中,我們如何讓各個線程間協調工作呢? 除了我們經常使用的線程同步鎖Sychronized,ReentrantLOcak的使用,還有線程自有方法,sleep,yeid的使用。哪還有那些高級的使用呢?那就是JUC包中的CountDownLatch,CyclicBarrier,Semaphore。今天我們先了解一下CountDownLatch的使用。 CountDownLatch 1....

    精品国产乱码久久久久久蜜桃不卡