【python基础】列表推导式&字典推导式&集合推导式

一、定义
  python的一种独有特性, 推导式是可以从一个数据序列构建另一个新的数据序列的结构体

  列表推导式,字典推导式,集合推导式(集合是可变数据类型,集合中的元素是不可变数据类型)

  1、列表推导式
    提供了简单的生成列表的方法

    (1)语法结构
      ①list = [表达式 for item in 容器]
      ②list = [表达式 for item in 容器 if 条件]
      ③list = [表达式 for item1 in 容器1 for item2 in 容器2]

    (2)执行流程
      ①循环遍历出容器中的每个元素item,应用到前边的表达式中,表达式产生的结果为最终列表中的元素
      ②循环遍历出容器中的每个元素item,使用if判断是否满足条件,满足条件的item应用表达式产生新列表中的元素
      ③通过两个for循环遍历出容器的元素, 将元素应用到表达式中组成新列表中的元素

 1 # 将一个嵌套列表转成一个一维列表
 2 list_num = [[1,2,3], [4,5,6], [7,8,9]]
 3 list9 = [x for lst in list_num for x in lst]
 4 print(list9)  # [1, 2, 3, 4, 5, 6, 7, 8, 9]
 5
 6 # 现有一个列表 list1 = [[1,2,3], [4,5,6], [7,8,9]]
 7 # 通过该列表生成一个新列表[1,4,7]
 8 # 通过该列表生成一个新列表[2,5,8]
 9
10 list10 = [lst[0] for lst in list_num]
11 print(list10)  # [1, 4, 7]
12
13 list11 = [lst[1] for lst in list_num]
14 print(list11)  # [2, 5, 8]  

  2、字典推导式
    是列表推导式思想的延续, 语法结构差不多, 只不过最终产生的是字典而已

    语法结构
      dict = { key表达式 : value表达式 for item in 容器}
      dict = { key表达式 : value表达式 for item in 容器 if 条件}
      dict = { key表达式 : value表达式 for item1 in 容器1 for item2 in 容器2}

 1 # 字典, 将字典中的key,value进行互换
 2 dict1 = {"name": "rose", "age": 17, "sex": "女"}
 3 dict2 = {v: k for k, v in dict1.items()}
 4 print(dict2)  #{‘rose‘: ‘name‘, 17: ‘age‘, ‘女‘: ‘sex‘}
 5
 6 # 使用字典推导式, 将list1中的元素作为key, 将list2中的元素作为value, 产生一个字典
 7 list1 = ["施耐庵", "吴承恩", "曹雪芹", "罗贯中"]
 8 list2 = ["水浒传", "西游记", "红楼梦", "三国演义"]
 9 dict3 = {x: list2[list1.index(x)] for x in list1 }
10 print(dict3)
11 dict4 = {list1[x]: list2[x] for x in range(len(list1))}
12 print(dict3)
13
14 # zip() 打包, 将多个可迭代对象(序列)中的相同索引值的元素, 放在一个元组里, 最终将所有的元组组成一个新的可迭代对象
15 dict5 = {k: v for k, v in zip(list1, list2)}  # [(施耐庵, 水浒传) (吴承恩,西游记) (曹雪芹,红楼梦) (罗贯中,三国演义)]
16 print(dict5)

  3、集合推导式

    集合推导式和列表推导式很相似, 唯一的区别就是用{}代替[]

    (1)语法结构

      ①set = {表达式 for item in 容器}
      ②set = {表达式 for item in 容器 if 条件}
      ③set = {表达式 for item1 in 容器1 for item2 in 容器2}

    (2)特点:自动去重功能

1 list1 = [9, 8, 7, -2, 2, -3, -7, 9]
2 # 使用集合推导式 推导出一个集合 集合中的元素是list1中元素的平方
3 set1 = {x ** 2 for x in list1}
4 print(set1) # {64, 4, 9, 81, 49}

原文地址:https://www.cnblogs.com/Tree0108/p/12110191.html

时间: 2024-10-02 00:35:10

【python基础】列表推导式&字典推导式&集合推导式的相关文章

python基础——列表、字典

Python核心数据类型--列表 列表是一个任意类型的对象的位置相关的有序集合,它没有固定的大小.大小可变的,通过偏移量进行赋值以及其他各种列表的方法进行调用,能够修改列表.其他更多的功能可以查阅python的标准手册,或者运行help(list)或dir(list)查看list方法的完整清单. 任意对象的有序集合:从功能上看,列表是收集其他对象的地方,同时列表所包含的每一项都保持了从左到右的位置顺序. 通过偏移读取:可以通过列表对象的偏移对其进行索引,从而读取对象的某一部分内容.由于列表的每一

python基础10 字符串操作,字典操作,集合操作

本节内容: 字符串操作 字典操作 集合操作 字符串操作 概述 字符串是以''或""括起来的任意文本,比如'abc',"xyz"等等.请注意,''或""本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'只有a,b,c这3个字符. 如果字符串本身包含'怎么办?比如我们要表示字符串 I'm OK ,这时,可以用" "括起来表示: "I'm OK" 类似的,如果字符串包含",我们就可以用'

Python自动化 【第二篇】:Python基础-列表、元组、字典

本节内容 模块初识 .pyc简介 数据类型初识 数据运算 列表.元组操作 字符串操作 字典操作 集合操作 字符编码与转码 一.模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持,让我们先来象征性的学2个简单的. sys 1 #!/usr/bin/env python 2 3 # -*- coding: utf-8 -*- 4 5 6 7 import sys 8 9 10 11 print(sys.argv) 12 13

Python基础-列表、元祖、字典、字符串

列表和分组 序列概览: 数据结构是通过某种方式组织在一起的数据元素的集合.这些元素可以是数字.字符,甚至可以是其他数据结构. 在python中,最基本的数据结构是序列(sequence). 序列中的每一个元素被分配一个序号----即元素的位置,也称为索引.下标.第一个索引是0,第二个索引是1,以此类推. Python包含6种内建的序列,此次重点讨论最常用的两种类型:列表.元祖.其他内建序列类型包括:字符串.Unicode字符串.buffer对象和xrange对象.接下来讲解对所有序列都通用的操作

python基础--列表、元祖、字典、集合

列表(List) 1.列表特点 列表是可变的!! list 是一种有序的序列,可以添加.删除其中的元素,并且可以通过下标(索引)访问 数据 2.简单的常用操作 A.通过下表访问元素 1 print(list1[0]) ##正序 2 print(list1[-1]) ##倒序 3 5 list[0] = '123' ##修改指定位置的值 B.切片 1 print(list[1:3]) 3.常用操作: 1 ##append:追加元素 2 list1.append('赵四') 3 4 ##extend

Python基础-列表、元组、字典

#!/usr/bin/env python# -*- coding:utf-8 -*- # v = "李杰"# for item in v:# print(item)##################################################################################################### str# name = "alex" # list # 类,列表# li = [1, 12, 9,

python基础教程总结3—字典

1.字典 1.1 字典类型与序列类型的区别: 存取和访问数据的方式不同. 序列类型只用数字类型的键(从序列的开始按数值顺序索引): 映射类型可以用其他对象类型作键(如:数字.字符串.元祖,一般用字符串作键),和序列类型的键不同,映射类型的键直接或间接地和存储数据值相关联. 映射类型中的数据是无序排列的.这和序列类型是不一样的,序列类型是以数值序排列的. 映射类型用键直接“映射”到值. 1.2 字典创建: 方法①: >>> dict1 = {} >>> dict2 = {

Python 基础---列表

列表是Python中最基本的数据结构,列表是最常用的Python数据类型,列表的数据项不需要具有相同的类型.列表中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推.list可以进行的操作包括索引,切片,加,乘,检查成员.此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法. 特点 一组有序项目的集合.可变的数据类型[可进行增删改查].列表中可以包含任何数据类型,也可包含另一个列表[可任意组合嵌套].列表是以方括号" []"包围的

python基础:元组、字典、深浅拷贝与函数

小生博客:http://xsboke.blog.51cto.com 小生 Q Q:1770058260 -------谢谢您的参考,如有疑问,欢迎交流 一. 元组(tuple) 1. 元组的特点 元组是固定的,不能修改也不能增减.因为元组不可变,所以更安全,如果可以,尽量不使用list而使用tuple 2.  格式 3.  可用参数 4.  元组的结构(以元组a为例) 当创建一个元组a时,将在内存中开辟一个名为a的内存,然后每个索引位置为一个命名空间,每个命名空间都有一个存储,而真实的数据就存在

python基础知识4(字典和函数)

# 字典 - 又称为(# hash,映射,关联数组) - "字" ---> 先找首字母,查到这个字的解释所在的页数; ## 字典的定义: d = {} d = {"key1":"value1"} d = {"key1":"value1","key2":"value3"} d = { "172.25.254.1": { "user&q