专栏首页不仅仅是python(二十) 初遇python甚是喜爱之list Comprehensions列表推导式

(二十) 初遇python甚是喜爱之list Comprehensions列表推导式

各位读者大大们大家好,今天学习python的列表推导式,并记录学习过程欢迎大家一起交流分享。

新建一个python文件命名为py3_list_comprehensions.py,在这个文件中进行操作代码编写:

#list Comprehensions(列表推导式) :
#用于基于现有列表创建新的列表
#目的是让大家写程序时候更加快捷方便
#写出更简洁的代码
#开始码起来:

#定义一个list列表
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
#想要得到nums中的每一个元素到一个新的list中去
#看如下代码实现:
my_list = [] 
for n in nums:
  my_list.append(n)
print(my_list)
#接下来我们使用列表推导式实现:
my_list = [] 
my_list =[n for n in nums]
print('推导式方式n列表:',my_list)
#想要得到nums中的每一个元素n*n到一个新的list中去
#使用普通的for循环实现:
my_list = [] 
for n in nums:
  my_list.append(n * n)
print(my_list)
#接下来我们使用列表推导式实现:
my_list = []
my_list = [n * n for n in nums]
print('推导式方式n*n列表: ',my_list)
#使用map + lambda实现
#map():内置的函数,接收一个函数function和一个list
#并通过把函数function依次作用在list的每个元素
#得到一个新的list并返回。
#lambda表达式
#通常是在需要一个函数
#但是又不想去命名一个函数情况下使用
#也就是指匿名函数。
#例如:
def add(x,y):
  return x + y
#用lambda表达式实现上边的函数:
l_add = lambda x,y:x+y
#继续实现例子:
my_list = []
my_list = list(map(lambda n: n * n,nums))
print('map + lambda实现n * n :',my_list)
#想要得到nums列表中的偶数到新的列表中去
#for循环代码实现
my_list = []
for n in nums:
  if n % 2 == 0:
    my_list.append(n)
print(my_list)
#推导式实现
my_list = []
my_list = [n for n  in nums if n % 2 == 0]
print(my_list)
#使用filter + lambda实现
#filter()函数用于过滤序列
#过滤掉不符合条件的元素
#返回由符合条件元素组成的新列表
my_list = []
my_list = list(filter(lambda n: n % 2 == 0,nums))
print('filter + lambda实现:',my_list)
#实现一个(字母,数字)对的列表
#使用for实现:
my_list = []
for letter in 'abcd':
  for num in [0, 1, 2, 3]:
    my_list.append((letter,num))
print(my_list)
#使用推导式实现:
my_list = []
my_list = [(letter,num) for letter in 'abcd' for num in (0 ,1, 2, 3)]
print(my_list)
#推导式生成字典
names = ['彪哥','小翠','吴德荣']
jobs = ['保镖','秘书','总经理','大厨']
#想到得到一个字典dict['name':'job']
#用到了zip()函数
#(将两个可迭代的列表象作为参数,一对一的生成元组)
#eg:
print(list(zip(names,jobs)))
#[('彪哥', '保镖'), ('小翠', '秘书'), ('吴德荣', '总经理')]
#for循环实现:
my_dict = {}
for name,job in zip(names,jobs):
  my_dict[name] = job
print(my_dict)
#使用推导式:
my_dict = {}
my_dict = {name:job for name,job in zip(names,jobs)}
print('推导式 字典:',my_dict)
#不想要名字为彪哥的信息:
my_dict = {}
my_dict = {name:job for name,job in zip(names,jobs) if name!='彪哥'}
print('推导式加条件的字典:',my_dict)
#推导式生成Set
nums = [1, 1, 2, 3, 4, 3, 6, 5, 6, 7, 7, 8, 9, 1]
my_set = set()
for n in nums:
  my_set.add(n)
print(my_set)
#推导式实现:
my_set = set()
my_set = {n for n in nums}
print('推导式set:',my_set)
#Generator生成器推导式
#Generator生成器后续学到在细讲
#实现一个n*n的生成器
#for循环版本:
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

def gen_func(nums_list):
  for n in nums_list:
    #yield是一个类似return的关键字,
    #只是这个函数返回的是个生成器。
    yield n * n
my_gen = gen_func(nums)

for i in my_gen:
  print(i)
#推导式实现:
my_gen = (n*n for n in nums)

运行效果:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
推导式方式n列表:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
推导式方式n*n列表:  [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
map + lambda实现n * n :[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[2, 4, 6, 8, 10]
[2, 4, 6, 8, 10]
filter + lambda实现:[2, 4, 6, 8, 10]
[('a', 0), ('a', 1), ('a', 2), ('a', 3), ('b', 0), ('b', 1), ('b', 2), ('b', 3), ('c', 0), ('c', 1), ('c', 2), ('c', 3), ('d', 0), ('d', 1), ('d', 2), ('d', 3)]
[('a', 0), ('a', 1), ('a', 2), ('a', 3), ('b', 0), ('b', 1), ('b', 2), ('b', 3), ('c', 0), ('c', 1), ('c', 2), ('c', 3), ('d', 0), ('d', 1), ('d', 2), ('d', 3)]
[('彪哥', '保镖'), ('小翠', '秘书'), ('吴德荣', '总经理')]
{'彪哥': '保镖', '小翠': '秘书', '吴德荣': '总经理'}
推导式 字典:{'彪哥': '保镖', '小翠': '秘书', '吴德荣': '总经理'}
推导式加条件的字典:{'小翠': '秘书', '吴德荣': '总经理'}
{1, 2, 3, 4, 5, 6, 7, 8, 9}
推导式set:{1, 2, 3, 4, 5, 6, 7, 8, 9}
1
4
9
16
25
36
49
64
81
100

今天初学python的列表推导式学习就到这里!

关注公号

下面的是我的公众号二维码图片,欢迎关注。

本文分享自微信公众号 - yale记(python_yale_learning),作者:yale记

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Django-5 数据库操作

    这节我们使用Django的model创建数据库表,以及如何使用Django ORM查询数据库并过滤结果。接下来开始:

    亚乐记
  • 数据分析-NumPy添加删除元素

    今天我们学习NumPy函数numpy.append和numpy.hstack来添加和删除NumPy数组中的元素以及水平和垂直堆叠数组。 使用Jupyter No...

    亚乐记
  • (二十三) 初遇python甚是喜爱之generator生成器

    各位读者大大们大家好,今天学习python的generator生成器,并记录学习过程欢迎大家一起交流分享。

    亚乐记
  • 遍历集合时删除元素,到底发生了什么

    当通过 for 循环遍历集合时,一般禁止操作 (add or remove) 集合元素。虽然开发规范里写的非常清楚,但最近还是有人掉坑里导致出了一个小 BUG,...

    芋道源码
  • Java基础之你会在foreach遍历集合时进行remove操作吗?

    当通过for循环遍历集合时,一般禁止操作(add or remove)集合元素。虽然开发规范里写的非常清楚,但最近还是有人掉坑里导致出了一个小BUG,那我们就一...

    码代码的陈同学
  • iOS App冷启动治理:来自美团外卖的实践

    冷启动时长是App性能的重要指标,作为用户体验的第一道“门”,直接决定着用户对App的第一印象。美团外卖iOS客户端从2013年11月开始,历经几十个版本的迭代...

    iOS_林夕
  • iOS App冷启动治理:来自美团外卖的实践

    冷启动时长是App性能的重要指标,作为用户体验的第一道“门”,直接决定着用户对App的第一印象。美团外卖iOS客户端从2013年11月开始,历经几十个版本的迭代...

    美团技术团队
  • iOS App冷启动治理:来自美团外卖的实践

    冷启动时长是App性能的重要指标,作为用户体验的第一道“门”,直接决定着用户对App的第一印象。美团外卖iOS客户端从2013年11月开始,历经几十个版本的迭代...

    美团技术团队
  • 从零开始学习PYTHON3讲义(五)while循环和棋盘麦粒问题

    ​上一节课重点学习了字符串,并且传递了一个重要的理念,就是程序要对开发人员自己和用户都足够友好。在这个过程中,利用字符串给出充分、完整、准确的提示是非常重要的一...

    俺踏月色而来
  • 【python入门系列课程 第八课 不停止的while循环】

    本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑。如果觉得好可以分享转发,有问题的地...

    用户7054460

扫码关注云+社区

领取腾讯云代金券