国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python for循環(huán)中的陷阱詳解

2020-02-15 22:23:05
字體:
供稿:網(wǎng)友

前言

Python 中的 for 循環(huán)和其他語言中的 for 循環(huán)工作方式是不一樣的,今天就帶你深入了解 Python 的 for 循環(huán),看看它是如何工作的,以及它為什么按照這種方式工作。

循環(huán)中的陷阱

我們先來看一下 Python 循環(huán)中的「陷阱」,在我們了解了循環(huán)的工作方式后,再來看下這些陷阱到底是怎么出現(xiàn)的。

陷阱 1:循環(huán)兩次

現(xiàn)在我們先假設(shè)有一個數(shù)字組成的列表,和一個用于返回這些數(shù)字的平方的生成器:

>>> nums = [1, 2, 3, 4]>>> squares = (n**2 for n in nums)

我們可以將這個生成器對象傳遞給元組構(gòu)造器,從而可以得到一個元組:

>>> tuple(squares)(1, 4, 9, 16)

這個時候,如果我們再將這個構(gòu)造器對象傳遞給 sum 函數(shù),按理說應(yīng)該會返回這些數(shù)字的和吧:

>>> sum(squares)0

返回的是個 0,先拖住下巴。

陷阱 2:檢查是否包含

我們還是使用上面的數(shù)字列表和生成器:

>>> nums = [1, 2, 3, 4]>>> squares = (n**2 for n in nums)

如果我 squares 生成器中是否包含 9,答案是肯定的,若果我再問一次呢?

你敢答應(yīng)嗎

>>> 9 in squaresTrue>>> 9 in squaresFalse

發(fā)現(xiàn),第二次不靈了~

怎么不靈了

陷阱 3:拆包

現(xiàn)在假設(shè)有一個字典:

>>> counts = {1:'a', 2:'b'}

然后,我們用多個變量對字典進行拆包:

>>> x,y = counts

你覺得這時候,x 和 y 中會是什么?

>>> x1>>> y2

我們只得到了鍵。

下面,我們先來了解下 Python 中的循環(huán)工作原理,然后再反過頭來看這些陷阱問題。

一些概念

首先,先了解一些基本概念:

可迭代和序列

可迭代就是指任意可以使用 for 循環(huán)遍歷的東西,可迭代意味著可以遍歷,任何可以遍歷的東西都是可迭代的。

for item in some_iterable: print(item)

序列是一種常見的可迭代類型,如列表、元組、字符串等。

序列是可迭代的,它有著一些特點,它們是從 0 開始索引,索引長度不超過序列的長度;它們有序列長度;并且它們可以被切分。

Python 中的大部分東西都是可以迭代的,但是可以迭代并不意味著它是序列。如集合、字典、文件和生成器都是可迭代的,但是它們都不是序列。

>>> my_set = {1, 2, 3}>>> my_dict = {'k1': 'v1', 'k2': 'v2'}>>> my_file = open('some_file.txt')>>> squares = (n**2 for n in my_set)            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 昭通市| 六安市| 鹰潭市| 广饶县| 江北区| 泽库县| 谢通门县| 永宁县| 吉首市| 融水| 海宁市| 汾西县| 来宾市| 江城| 海兴县| 滦南县| 若羌县| 巩留县| 西和县| 色达县| 青田县| 康平县| 湘潭市| 晋中市| 新津县| 工布江达县| 新化县| 凤山县| 武定县| 冀州市| 宜兴市| 威海市| 曲松县| 伊川县| 广丰县| 满城县| 湘潭市| 确山县| 内丘县| 奉贤区| 郴州市|