『Python基礎-12』各種推導式(列表推導式、字典推導式、集合推導式)

# 『Python基礎-12』各種推導式(列表推導式、字典推導式、集合推導式)

推導式comprehensions(又稱解析式),是Python的一種獨有特性。推導式是可以從一個數據序列構建另一個新的數據序列的結構體。 共有三種推導,在Python2和3中都有支持:

目錄:

  1. 列表(list)推導式
  2. 字典(dict)推導式
  3. 集合(set)推導式

1.列表推導式

1.1、使用[]生成list

基本格式:

variable = [out_exp_res for out_exp in input_list if out_exp == 2]out_exp_res:  #列表生成元素表達式,可以是有返回值的函數。for out_exp in input_list:  #迭代input_list將out_exp傳入out_exp_res表達式中。if out_exp == 2:  #根據條件過濾哪些值可以。

示例一:

multiples = [i for i in range(30) if i % 3 is 0]
print(multiples)

運行結果: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

示例二:

def squared(x):return x*x
multiples = [squared(i) for i in range(30) if i % 3 is 0]
print multiples

運行結果: [0, 9, 36, 81, 144, 225, 324, 441, 576, 729]

1.2、 使用()生成generator

將倆表推導式的[]改成()即可得到生成器:

multiples = (i for i in range(30) if i % 3 is 0)
print(type(multiples))

運行結果:<type 'generator'>

2. 字典推導式

字典推導和列表推導的使用方法是類似的,只不中括號該改成大括號。

示例一: 大小寫key合并:

mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}
mcase_frequency = {k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0)for k in mcase.keys()if k.lower() in ['a','b']
}
print mcase_frequency

運行結果:{'a': 17, 'b': 34}

示例二: 快速更換key和value:

mcase = {'a': 10, 'b': 34}
mcase_frequency = {v: k for k, v in mcase.items()}
print mcase_frequency

運行結果:{10: 'a', 34: 'b'}

3. 集合推導式

它們跟列表推導式也是類似的。 唯一的區別在于它使用大括號{}。

squared = {x**2 for x in [1, 1, 2]}
print(squared)

運行結果: Output: set([1, 4])

這篇筆記來自: cnblog


Thanks Reading ! ?(・ω・)ノ

轉載于:https://www.cnblogs.com/gybb/p/9792657.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252555.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252555.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252555.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

海思芯片選型表匯總

海思芯片選型表匯總_「違規用戶」的博客-CSDN博客_海思芯片型號大全

Docker中未指定掛載點容器間volume卷的數據共享

一 背景 在實際使用過程中&#xff0c;我們可能會經常遇到容器間數據共享的情況&#xff0c;怎么處理呢&#xff1f;通過 docker 命令中的一些選項&#xff0c;我們即可完成容器間的數據共享。 二 實驗步驟 2.1 創建容器 容器一&#xff1a;gysl-1 [rootdev ~]# docker run -it…

為什么早上和傍晚的太陽總是紅色,而中午的大陽卻是黃白色?

由太陽光本質決定&#xff0c;但會受環境影響。在地球上和火星上看到的太陽光也是有區別的&#xff0c;和太氣層物質及厚薄也有關系。太陽光是由赤橙黃綠青藍紫七色光組成的復合光是白色光。 在日出和日落的時候&#xff0c;地平線上所透過的大氣層厚度&#xff0c;一般要比白…

js把日期字符串轉換成時間戳

//獲取當前時間&#xff1a; var myDate new Date();//當前時間 var year myDate.getFullYear();//當前年份 var month myDate.getMonth() 1;//當前月份 var day myDate.getDate();//當前日 myDate.getYear(); //獲取當前年份(2位) myDate.getFullYear(); …

VS2008中開發智能設備程序的一些總結

原文鏈接&#xff1a;http://blog.csdn.net/citybug_nj/article/details/2598705 程序中包括四個部分&#xff1a; 系統配置這個部分用來配置系統中的相關參數&#xff0c;參數包括數據庫信息和串口的配置信息。這部分的主要技術是XML文件的讀取和寫入。 數據下載從數據庫中下載…

go語言值得學習的開源項目推薦

谷歌官方維護了一個基于go語言的開源項目列表&#xff1a; https://github.com/golang/go/wiki/Projects 其中有非常多的優秀項目值得學習&#xff0c;有幾百行代碼適合新手閱讀的項目&#xff0c;也有大型如nsq、docker等的項目。 下面推薦幾款適合學習的項目&#xff1a; 1、…

部分Nand flash uboot 命令詳解

nand info & nand device顯示flash的信息&#xff1a; DM365 :>nand info Device 0: NAND 32MiB 3,3V 8-bit, sector size 16 KiB DM365 :>nand device Device 0: NAND 32MiB 3,3V 8-bitnand read(.oob) addr off size 不管是讀取data, 使用nand read&#xff0c;還是…

java7

第八章 數組 1.數組的聲明定義 數據類型[]變量名 new 數據類型[長度]; 列&#xff1a;int[]ary new int[5]; 2.取值&#xff0c;賦值 取值&#xff1a;數據名[下標]; 列&#xff1a;int a ary[1]; 賦值&#xff1a;變量數據名[…

BZOJ 3564 信號增幅儀

題目鏈接&#xff1a;http://www.lydsy.com/JudgeOnline/problem.php?id3564 題意&#xff1a;給出平面上n個點&#xff0c;畫出一個橢圓&#xff0c;橢圓的長軸是短軸的p倍&#xff0c;且長軸的方向為x軸逆時針旋轉a度。求這個橢圓短軸的最小值使得可以覆蓋所以點。 思路&…

CentOS 7 搭建JAVA環境

安裝環境&#xff1a; LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.3.1611 (Core) Release: 7.3.1611 Codename: Core 開始 運行java -version 檢查系統是否安裝JRE 或JDK&#xff0c;有則卸載系統自帶JAVA包輸…

串口波形分析

UART口發出數據按字節發送&#xff0c;發送數據8bit&#xff0c;實際量出波形為10bit&#xff0c;軟件底層驅動會自動加上起始位和停止位各1bit&#xff0c;起始位為0&#xff0c;停止位為1。下圖為用串口工具發送的數據和用示波器所量波形。 發送數據&#xff1a;0x34 0x43 示…

SpringBoot之MongoTemplate的查詢可以怎么耍

學習一個新的數據庫&#xff0c;一般怎么下手呢&#xff1f;基本的CURD沒跑了&#xff0c;當可以熟練的增、刪、改、查一個數據庫時&#xff0c;可以說對這個數據庫算是入門了&#xff0c;如果需要更進一步的話&#xff0c;就需要了解下數據庫的特性&#xff0c;比如索引、事物…

這可能是我見過最詳細的快速排序!

關于快速排序&#xff0c;網上&#xff0c;和維基都有完成的解釋&#xff0c;他們都是。。。。。。&#xff0c;俺覺得都是&#xff0c;太過于總結話語在概述一些東西&#xff1b; 而我卻從最本質的東西&#xff0c;一步一步的深入&#xff1b;在深入的學習過程中&#xff0c;我…

LINQ to SQL 實現 GROUP BY、聚合、ORDER BY

前言 本示例主要實現 LINQ 查詢&#xff0c;先分組&#xff0c;再聚合&#xff0c;最后在排序。示例很簡單&#xff0c;但是使用 LINQ 卻生成了不同的 SQL 實現。 1) 采用手動編寫 SQL 實現 SELECT ROW_NUMBER() OVER(ORDER BY T.RealTotal DESC) AS SN, * FROM ( SELECT (S…

Mysql之事務

什么是事務 假如你下了一筆訂單&#xff0c;會有以下數據庫操作&#xff1a; 1. 生成一筆訂單記錄 2. 減少庫存 3. 從你的賬戶中減少金額 4. 生成支付記錄 這邊的四個操作缺一不可&#xff0c;一旦某一個操作出現異常&#xff0c;則全部操作都需要全部回滾。而事務的作…

JVM垃圾回收機制總結

對于垃圾回收機制我先拋出三個問題&#xff1a; ①哪些內存需要回收&#xff1f; ②什么時候回收&#xff1f; ③如何回收&#xff1f; 下面我們主要針對這三個問題來研究JVM GC 一、哪些內存需要回收&#xff1f; 1.JAVA使用可達性分析法來判斷對象是否需要回收。 這個算法的基…

虛擬機增加內存方法

樓主由于要在虛擬機里面裝一個oracle&#xff0c;在安裝過程中&#xff0c;提示物理內存不符合最低標準&#xff0c;如圖1. 圖1 因為懶得新建一個虛擬機了&#xff0c;所以考慮給虛擬機新增磁盤空間。 首先說明&#xff0c;新增磁盤空間&#xff0c;必須保證當前虛擬機里每個新…

myBatis xml if、where、if-else?、foreach 心得

MyBatis 的強大特性之一便是它的動態 SQL。如果你有使用 JDBC 或其它類似框架的經驗&#xff0c;你就能體會到根據不同條件拼接 SQL 語句的痛苦。例如拼接時要確保不能忘記添加必要的空格&#xff0c;還要注意去掉列表最后一個列名的逗號。利用動態 SQL 這一特性可以徹底擺脫這…

bzoj千題計劃213:bzoj2660: [Beijing wc2012]最多的方案

http://www.lydsy.com/JudgeOnline/problem.php?id2660 很容易想到是先把n表示成最大的兩個斐波那契數相加&#xff0c;然后再拆分這兩個斐波那契數 把數表示成斐波那契進制的形式&#xff0c;第i位表示有沒有第i個斐波那契數 比如16133 001001 那么拆分一個數就是把一個1…

面對對象-封裝

private 私有的 package/friendly/default 不寫 protected 受保護的 public 公共的 那么什么情況該用什么修飾符呢&#xff1f;從作用域來看&#xff0c;public能夠適用所有的情況。 但是大家在工作的時候&#xff0c;又不會真正全部都適用public,那么到底什么情況改用什么修飾…