最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python3?cookbook解壓可迭代對象賦值給多個變量的問題及解決方案

 更新時間:2024年01月24日 14:46:21   作者:北方騎馬的蘿卜  
這篇文章主要介紹了python3?cookbook-解壓可迭代對象賦值給多個變量,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

第一章:數(shù)據(jù)結(jié)構(gòu)和算法

Python 提供了大量的內(nèi)置數(shù)據(jù)結(jié)構(gòu),包括列表,集合以及字典。大多數(shù)情況下使用這些數(shù)據(jù)結(jié)構(gòu)是很簡單的。但是,我們也會經(jīng)常碰到到諸如查詢,排序和過濾等等這些普遍存在的問題。 因此,這一章的目的就是討論這些比較常見的問題和算法。 另外,我們也會給出在集合模塊 collections 當(dāng)中操作這些數(shù)據(jù)結(jié)構(gòu)的方法。

參考:
https://python3-cookbook.readthedocs.io/zh-cn/latest/index.html  

https://github.com/dabeaz/python-cookbook/tree/master 

問題

如果一個可迭代對象的元素個數(shù)超過變量個數(shù)時,會拋出一個 ValueError 。那么怎樣才能從這個可迭代對象中解壓出 N 個元素出來?

解決方案

Python 的星號表達(dá)式可以用來解決這個問題。

比如,你在學(xué)習(xí)一門課程,在學(xué)期末的時候,你想統(tǒng)計下家庭作業(yè)的平均成績,但是排除掉第一個和最后一個分?jǐn)?shù)。如
果只有四個分?jǐn)?shù),你可能就直接去簡單的手動賦值,但如果有 24 個呢?這時候星號表達(dá)式就派上用場了:

def drop_first_last(grades):
	first, *middle, last = grades
	return avg(middle)

另外一種情況,假設(shè)你現(xiàn)在有一些用戶的記錄列表,每條記錄包含一個名字、郵件,接著就是不確定數(shù)量的電話號碼。
你可以像下面這樣分解這些記錄:

record = ('Dave', 'dave@example.com', '773-555-1212', '847-555-1212')
name, email, *phone_numbers = record
==========================================
name='Dave'
email='dave@example.com'
phone_numbers=['773-555-1212', '847-555-1212']

值得注意的是上面解壓出的 phone numbers 變量永遠(yuǎn)都是列表類型,不管解壓的電話號碼數(shù)量是多少 (包括 0 個)。
所以,任何使用到 phone numbers 變量的代碼就不需要做多余的類型檢查去確認(rèn)它是否是列表類型了。

星號表達(dá)式也能用在列表的開始部分。
比如,你有一個公司前 8 個月銷售數(shù)據(jù)的序列,但是你想看下最近一個月數(shù)據(jù)和前面 7 個月的平均值的對比。你可以這樣做:

*trailing_qtrs, current_qtr = sales_record
trailing_avg = sum(trailing_qtrs) / len(trailing_qtrs)
return avg_comparison(trailing_avg, current_qtr)
#下面是在 Python 解釋器中執(zhí)行的結(jié)果:
*trailing, current = [10, 8, 7, 1, 9, 5, 10, 3]
 trailing=[10, 8, 7, 1, 9, 5, 10]
 current=3

討論

擴(kuò)展的迭代解壓語法是專門為解壓不確定個數(shù)或任意個數(shù)元素的可迭代對象而設(shè)計的。

值得注意的是,星號表達(dá)式在迭代元素為可變長元組的序列時是很有用的。
比如,下面是一個帶有標(biāo)簽的元組序列:

records = [
			('foo', 1, 2),
			('bar', 'hello'),
			('foo', 3, 4),
			]
def do_foo(x, y):
	print('foo', x, y)
def do_bar(s):
	print('bar', s)
for tag, *args in records:
	if tag == 'foo':
		do_foo(*args)
	elif tag == 'bar':
		do_bar(*args)

星號解壓語法在字符串操作的時候也會很有用,比如字符串的分割。
代碼示例:

line = 'nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false'
uname, *fields, homedir, sh = line.split(':')
======================================================
uname='nobody'
homedir='/var/empty'
sh='/usr/bin/false'

有時候,你想解壓一些元素后丟棄它們,你不能簡單就使用 * ,但是你可以使用一個普通的廢棄名稱,比如 或者 ign 。
代碼示例:

record = ('ACME', 50, 123.45, (12, 18, 2012))
name, *_, (*_, year) = record
==========================================
name='ACME'
year=2012

在很多函數(shù)式語言中,星號解壓語法列表處理有許多相似之處。
比如,如果你有一個列表,你可以很容易的將它分割成前后兩部分:

items = [1, 10, 7, 4, 5, 9]
head, *tail = items
==========================
head=1
tail=[10, 7, 4, 5, 9]

還能用這種分割語法去巧妙的實(shí)現(xiàn)遞歸算法。
比如:

def sum(items):
	 head, *tail = items
	 return head + sum(tail) if tail else head
sum(items)
==================================
36

到此這篇關(guān)于python3 cookbook-解壓可迭代對象賦值給多個變量的文章就介紹到這了,更多相關(guān)python3可迭代對象內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Pandas替換及部分替換(replace)實(shí)現(xiàn)流程詳解

    Pandas替換及部分替換(replace)實(shí)現(xiàn)流程詳解

    這篇文章主要介紹了Pandas替換及部分替換(replace)實(shí)現(xiàn)流程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • python?pipreqs工具生成requirements.txt文件使用詳解

    python?pipreqs工具生成requirements.txt文件使用詳解

    這篇文章主要為大家介紹了python?pipreqs工具生成requirements.txt文件使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • python 常見的反爬蟲策略

    python 常見的反爬蟲策略

    這篇文章主要介紹了python反爬蟲策略,幫助大家更好的理解和使用python 爬蟲,感興趣的朋友可以了解下
    2020-09-09
  • Python實(shí)現(xiàn)將doc轉(zhuǎn)化pdf格式文檔的方法

    Python實(shí)現(xiàn)將doc轉(zhuǎn)化pdf格式文檔的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)將doc轉(zhuǎn)化pdf格式文檔的方法,結(jié)合實(shí)例形式分析了Python實(shí)現(xiàn)doc格式文件讀取及轉(zhuǎn)換pdf格式文件的操作技巧,以及php調(diào)用py文件的具體實(shí)現(xiàn)方法,需要的朋友可以參考下
    2018-01-01
  • Python?pyecharts?Map地圖數(shù)據(jù)不顯示的原因及完美解決

    Python?pyecharts?Map地圖數(shù)據(jù)不顯示的原因及完美解決

    這篇文章主要給大家介紹了關(guān)于Python?pyecharts?Map地圖數(shù)據(jù)不顯示的原因及解決辦法,pyecharts是一款將python與echarts結(jié)合的強(qiáng)大的數(shù)據(jù)可視化工具,文中通過圖文以及代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • OpenCV OCR實(shí)現(xiàn)提取圖片文本的完整代碼

    OpenCV OCR實(shí)現(xiàn)提取圖片文本的完整代碼

    本文主要介紹了使用OpenCV和EasyOCR處理圖片并提取文字的流程,首先預(yù)處理圖片,包括灰度化、去噪、對比度增強(qiáng)等銳化等步驟,此方法適用于處理低質(zhì)量圖片并提取其中的文字,希望對大家有所幫助
    2026-05-05
  • 33個Python爬蟲項目實(shí)戰(zhàn)(推薦)

    33個Python爬蟲項目實(shí)戰(zhàn)(推薦)

    這篇文章主要介紹了33個Python爬蟲項目實(shí)戰(zhàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-07-07
  • Django發(fā)送郵件和itsdangerous模塊的配合使用解析

    Django發(fā)送郵件和itsdangerous模塊的配合使用解析

    這篇文章主要介紹了Django發(fā)送郵件和itsdangerous模塊的配合使用解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • Python測試框架pytest高階用法全面詳解

    Python測試框架pytest高階用法全面詳解

    這篇文章主要為大家介紹了Python測試框架pytest高階用法全面詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Pycharm中如何關(guān)掉python console

    Pycharm中如何關(guān)掉python console

    這篇文章主要介紹了Pycharm中如何關(guān)掉python console,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10

最新評論

上林县| 海宁市| 高唐县| 咸阳市| 中西区| 二连浩特市| 金塔县| 西华县| 革吉县| 深水埗区| 农安县| 同心县| 思南县| 卢氏县| 武城县| 余庆县| 商南县| 临朐县| 通河县| 彭州市| 错那县| 屯门区| 邢台县| 昭平县| 平舆县| 瑞丽市| 彩票| 斗六市| 肃南| 中卫市| 福泉市| 侯马市| 潜山县| 铁岭县| 通山县| 双峰县| 广丰县| 邯郸市| 白沙| 萍乡市| 汪清县|