1. 用列表推导式做下列小题

  2. 用列表推导式做下列小题

  3. 过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母

    l = ['wusir', 'laonanhai', 'aa', 'b', 'taibai']
    # print([i.upper() for i in l if len(i) > 3])
  4. 求(x,y)其中x是0-5之间的偶数,y是0-5之间的奇数组成的元祖列表

    # print([(i,j) for i in range(6) if i % 2 == 0 for j in range(6) if j % 2 == 1])
  5. 求M中3,6,9组成的列表M = [[1,2,3],[4,5,6],[7,8,9]]

    print([[i-2,i-1,i] for i in range(3, 10, 3)])
  6. 求出50以内能被3整除的数的平方,并放入到一个列表中。

    print([i**2 for i in range(50) if i % 3 == 0])
  7. 构建一个列表:['python1期', 'python2期', 'python3期', 'python4期', 'python6期', 'python7期', 'python8期', 'python9期', 'python10期']

    print(['python%s期'% i for i  in range(1,11) if i != 5])
  8. 构建一个列表:[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]

     print([(i,i+1) for i in range(6)])
  9. 构建一个列表:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

    print([i+i for i in range(10)])
  10. 有一个列表l1 = ['alex', 'WuSir', '老男孩', '太白']将其构造成这种列表['alex0', 'WuSir1', '老男孩2', '太白3']

    print([l1[i] + str(i) for i in range(len(l1))])
  11. 有以下数据类型:

x = {'name':'alex',
'Values':[{'timestamp':1517991992.94,'values':100,},
{'timestamp': 1517992000.94,'values': 200,},
{'timestamp': 1517992014.94,'values': 300,},
{'timestamp': 1517992744.94,'values': 350},
{'timestamp': 1517992800.94,'values': 280}],}

将上面的数据通过列表推导式转换成下面的类型:[[1517991992.94, 100], [1517992000.94, 200], [1517992014.94, 300], [1517992744.94, 350], [1517992800.94, 280]]

print([[i['timestamp'], i['values']] for i in x['Values']])
  1. 用列表完成笛卡尔积

    什么是笛卡尔积? 笛卡尔积就是一个列表,列表里面的元素是由输入的可迭代类型的元素对构成的元组,因此笛卡尔积列表的长度等于输入变量的长度的乘积。

​ a. 构建一个列表,列表里面是三种不同尺寸的T恤衫,每个尺寸都有两个颜色(列表里面的元素为元组类型)。

colors = ['black', 'white']
sizes = ['S', 'M', 'L']
tshirts = [(color, size)for color in colors for size in sizes]
print(tshirts)

​ b. 构建一个列表,列表里面的元素是扑克牌除去大小王以后,所有的牌类(列表里面的元素为元组类型)。

l1 = [('A','spades'),('A','diamonds'), ('A','clubs'), ('A','hearts')......('K','spades'),('K','diamonds'), ('K','clubs'), ('K','hearts') ]

ranks = [str(n) for n in range(2, 11)] + list('JQKA')
suits = 'spades diamonds clubs hearts'.split()
lis = [(rank, suit) for suit in suits for rank in ranks]
  1. 简述一下yield 与yield from的区别。

    yield 是生成器函数的标识,函数中只要有yield那么他就是生成器函数而不是函数。

    next会从生成器函数中的yield获取值。

    yield from 从便于理解的角度讲:它会将一个可迭代对象里面的每一个值作为生成器的生成的值:

    yield from ['卫龙','老冰棍','北冰洋','牛羊配']

    等同于:

    yield '卫龙'

    yield '老冰棍'

    yield '北冰洋'

    yield '牛羊配'

    从更深层的角度去讲yield from有两个作用(一定要背过,面试题):

    1. 他可以完全代替了内层循环,提高效率,让待吗读起来更顺畅(下一道题就可以验证)。

    2. 还可以创建通道,把内层生成器直接与外层生成器的客户端连接起来

  2. 看下面代码,能否对其简化?说说你简化后的优点?

def chain(*iterables):

	for it in iterables:

		for i in it:

			yield i

g = chain('abc',(0,1,2))

print(list(g))  # 将迭代器转化成列表

def chain(*iterables):
for it in iterables:
yield from it
g = chain('abc',(0,1,2))
print(list(g))
优点: 他可以完全代替了内层循环,提高效率,让待吗读起来更顺畅(下一道题就可以验证)。
  1. 看代码求结果(面试题):
v = [i % 2 for i in range(10)]
print(v) v = (i % 2 for i in range(10))
print(v) for i in range(5):
print(i)
print(i)
  1. 看代码求结果:(面试题
def demo():
for i in range(4):
yield i g=demo() g1=(i for i in g)
g2=(i for i in g1) print(list(g1))
print(list(g2))
  1. 看代码求结果:(面试题
def add(n,i):
return n+i def test():
for i in range(4):
yield i g=test()
for n in [1,10]:
g=(add(n,i) for i in g) print(list(g)) # 分步去分析循环。

python之道12的更多相关文章

  1. Python补充06 Python之道

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python有一个彩蛋,用下面语句调出: import this 该彩蛋的文档记录 ...

  2. 【转】Centos升级Python 2.7.12并安装pip、ipython

    Centos系统一般默认就安装有Python2.6.6版本,不少软件需要2.7以上的,通过包管理工具安装不了最新的版本,通过源码编译可以方便安装指定版本,只需要把下面版本的数字换成你想要的版本号. 1 ...

  3. 彩蛋 Python之道

    彩蛋 Python之道 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 使用下面的语句可以调出Python中的一个彩蛋, impo ...

  4. python入门(12)dict

    python入门(12)dict Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度. 举个例 ...

  5. 【转】Python之道

    作者:Vamei 出处:http://www.cnblogs.com/vamei Python有一个彩蛋,用下面语句调出: import this 该彩蛋的文档记录于PEP 20. 语句执行之后,终端 ...

  6. Python之道(一)之安装Python

    "Python之道"首先介绍一下在windows系统下怎样安装Python开发环境. (1)下载MSI安装文件 进入网址www.python.org,点击Downloads进入下载 ...

  7. Python高级特性: 12步轻松搞定Python装饰器

    12步轻松搞定Python装饰器 通过 Python 装饰器实现DRY(不重复代码)原则:  http://python.jobbole.com/84151/   基本上一开始很难搞定python的装 ...

  8. supperset (python 2.7.12 + mysql)记录

    网上看到superset,比较感兴趣,虚机上搭一下,记录操作过程. 版本信息:CentOS 6.6 + python 2.7.12 + mysql 5.1.73 + setuptools 36.5.0 ...

  9. Python Cookbook 笔记--12章并发编程

    <Python Cookbook(第3版)中文版> 1.队列queue的有些方法是线程不安全的,在多线程中最好别用 2.需要限制一段代码的并发访问量时,用信号量.不要把信号量当做普通的锁来 ...

随机推荐

  1. Sequence( 分块+矩阵快速幂 )

    题目链接 #include<bits/stdc++.h> using namespace std; #define e exp(1) #define pi acos(-1) #define ...

  2. spark_spark连接hive config

    1 环境 hadoop2.7.3 apache-hive-2.1.1-bin spark-2.1.0-bin-hadoop2.6 jdk1.8 2 配置文件 在hive-site.xml中配置mysq ...

  3. GUI的最终选择 Tkinter(二):Label和Button组件

    Label组件 Lable组件是用于界面上输出描述的标签,例如提示用户“您下载的电影含有未成年人限制内容,请满18岁以后点击观看!”,先来上结果图: 在来看下它的代码: from tkinter im ...

  4. 原svn账户清除,及使用新用户名密码操作方法

    原svn账户清除,及使用新用户名密码操作方法 第一步:先清除原svn账户信息,如图示,电脑桌面右击“ToroiseSVN--Settings”. 在Settings中,选择Saved Data中的Cl ...

  5. leetcode 91. 解码方法

    题目描述: 一条包含字母 A-Z 的消息通过以下方式进行了编码: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 给定一个只包含数字的非空字符串,请计算解码方法的总数 ...

  6. Matrix Power Series POJ - 3233 矩阵幂次之和。

    矩阵幂次之和. 自己想着想着就想到了一个解法,但是还没提交,因为POJ崩了,做了一个FIB的前n项和,也是用了这个方法,AC了,相信是可以得. 提交了,是AC的 http://poj.org/prob ...

  7. Solr7.x介绍安装和配置(单机版)

    之前学的是4.x,然后一看官网,奶奶的都7.x了.于是查了一番资料..... 1)下载和安装 wget http://mirror.bit.edu.cn/apache/lucene/solr/7.3. ...

  8. java实现定时任务(Quartz)

    java中实现定时任务执行某一业务.具体操作如下: 1.定义初始化任务 2.任务业务操作 3.定义初始化方法 4.在web.xml中注册启动 5.定义具体执行时间 6.quartz定时任务时间设置 q ...

  9. 如何在数据库中导入excel文件内的数据

    如何在数据库中轻松导入excel格式的文件 1)打开sql server,找到要导入数据的数据库,右键>>任务>>导入数据 2)按照图示选择要导入的excel 3)选择导入到哪 ...

  10. 从零开始的全栈工程师——js篇2.12(面向对象)

    面向对象 Js一开始就是写网页特效,面向过程的,作者发现这样写不好,代码重复利用率太高,计算机内存消耗太大,网页性能很差. 所以作者就收到java和c的影响,往面向对象靠齐.Js天生有一个Object ...