一、 列表推导式
 
ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,
它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,
或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,
则会引发一个 TypeError 的异常。
 
 
列表推导式
x = ['1', '23', '34' ,'54']
list_x = [int(i) for i in x]
------------------------------------------------------------------------
2.1 列表推导
基础知识回顾,列表切片
list1 = list(range(10)) ==> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
list[0:3] = [0, 1, 2] 左边是闭合区间,右边是开
list[:4] 没有指定头发,那么默认从零开始, [0, 1, 2, 3】
list[1:] 没有指定结尾,那么默认到末尾 【1, 2, 3, 4, 5, 6, 7, 8, 9】
list[-3:] 只输出倒数三位 【 7, 8, 9]
list[:-3] 只输出前两位
 
复制切片 p = list1[:]
 
 
 
 
 
一个引子:序列中被2整除的数
 
# a example, 每次循环都要确定,哪部分被修改,且必须通过计数器来跟踪必须处理的元素
 
nums = range(10)
size = len(nums)
evens = []
i = 0
while i < size:
 if i % 2 ==0:
  evens.appned(i)
 i += 1
evens
 
# 用列表推导式,十分高效简洁,且可以减少bug
[i for i in range(10) if i % 2 == 0]
 
 
# example 2, 使用enumerate, 这个内建函数为在循环中使用序列时
# 提供了更加便利的获得索引的方式
# 将列表中的元素,和它的索引一起打出来
方法1)
i = 0
seq = ['one', 'two', 'three']
for element in seq:
 seq[i] = '%d: %s' % (i, seq[i])
 i += 1
seq
 
方法2)
使用 enumerate(iterable, start=0)
enumerate()函数返回一个枚举对象,iterable必须是一个序列、一个迭代器或者其他支持迭代的对象(字符串,数组,列表等)
 
for index, element in enumerate(seq):
 print((index, element))
 
也可以用用列表推导式
方法3)
 
# %s, %d, %f 都是一个输出格式, 
# 比方这个
print ("Name:%10s Age:%8d Height:%8.2f"%("Alfred",25,1.70))
#输出效果:
Name: Alfred Age: 25 Height: 1.70
——————————————————————————————————————————————————————————————————-
def _treatment(pos, ele):
     return "%d: %s" % (pos, ele)
 
[_treatment(pos, ele) for pos, ele in enumerate(seq)]
 
——————————————————————————————————————————————————————————————————-
 
 
2.2 
 
--------------------------------------------------------------------
 
 
 
 
匿名函数 lambda
python 使用 lambda 来创建匿名函数。
 
lambda只是一个表达式,函数体比def简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
 
lambda [arg1 [,arg2,.....argn]]:expression
 
--------------------------------------------------------------------------------------
filter
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,
如果要转换为列表,可以使用 list() 来转换。
该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,
然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
 
filter(function, iterable)
function -- 判断函数。
iterable -- 可迭代对象。
 
 
--------------------------------------------------------------------------------------
 
map() 会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
 
map(function, iterable, ...)
 
function -- 函数
iterable -- 一个或多个序列
 
--------------------------------------------------------------------------------------
 
 
二、生成式
 
生成器表达式的语法跟列表推导差不多,只不过把方括号换成圆括号而已。
如果生成器表达式是一个函数调用过程中的唯一参数,那么不需要额外再用括号把它围
起来。
 
str_1 = "QEjwqer"
tuple(ord(x) for x in str_1)
 
 
 array 的构造方法需要两个参数,因此括号是必需的。 array
构造方法的第一个参数指
定了数组中数字的存储方式。
 
import array
array.array('I', (ord(i) for i in str1))
 
>> array('I', [81, 69, 106, 119, 113, 101, 114])
 
 
元组和记录
 
tuple1 = [("dai", "25", ), ("name", "daihao"), ("monney", "1$")]
 
for x in tuple1:
 print('%s/%s' % x) #(%s/%s)输出第一个元素和第二个元素
 
for _, x in tuple1: # x表示的是元组的第二个元素
 print(x) 
 
元组还可以用来快捷赋值
city, year, pop, chg, area = ('Tokyo', 2003, 32450, 0.66, 8014)
 
等于 city, year, pop, chg, area = 'Tokyo', 2003, 32450, 0.66, 8014
 
 
还可以用 * 运算符把一个可迭代对象拆开作为函数的参数:
>>> divmod(20, 8) # divmod= (//, %)--->(a//b, a%b)
 
(2, 4)  
 
还可以用 * 运算符把一个可迭代对象拆开作为函数的参数
 
>>> t = (20, 8)
>>> divmod(*t)
(2, 4)
>>> x1, x2 = divmod(*t)
>>> x1
2
>>> x2
4
 
import os 
_, filename = os.path.split('/home/luciano/.ssh/idrsa.pub') # os.path.split() 将文件名和路径名分开
 
print(filename) --- idrsa.pub
 
 
用 * 来处理剩下的元素
>>> x
[1, (12, 33), {'w': 'wq'}]
>>> a, *b, c =x
>>> c
{'w': 'wq'}
>>>
 
 
format 实现定长(或者说是宽)输出
当对一组数据输出的时候,我们有时需要输出以指定宽度,来使数据更清晰。这时我们可以用format来进行约束。
 
mat = "{:20}\t{:28}\t{:32}"
print(mat.format("占4个长度","占8个长度", "占12长度"))
#如果需要居中输出在宽度前面加一个^
mat = "{:^20}\t{:^28}\t{:^32}"
print(mat.format("占4个长度","占8个长度", "占12长度"))
 
 
具名元组
优势:普通的元组,没有名称,有时候不太明白,每个字段的含义;而且具名元组很方便,不用创建类
 
创建一个具名元组需要两个参数,一个是类名,另一个是类的各个字段的名字。后者可
以是由数个字符串组成的可迭代对象,或者是由空格分隔开的字段名组成的字符串。
 
存放在对应字段里的数据要以一串参数的形式传入到构造函数中(注意,元组的构造函
数却只接受单一的可迭代对象)。你可以通过字段名或者位置来获取一个字段的信息
 
 
 
对对象进行切片
 
str1 它的正向排序, str1[0:19] = "daihaolong_love_luo"
      str1[-19:] = "daihaolong_love_luo"
      str1[:-1] = str1[-19:-1] = "daihaolong_love_lu" (左闭右开,开的时候,没有选中倒数第一个)
 
str1 = "daihaolong_love_luo"
 
str1[::-1] 相当于,在开始和结束为止,右边每隔一个取一个出来
 
str1[::-1] = "oul_evol_gnoloahiad" 
 
str1[::-1] 相当于,在开始和结束为止,右边每隔2个取一个出来
str1[::-2] = "oleo_nlaid"
 
由列表组成的列表
 
board = [['_'] * 3 for i in range(3)] #一个包含 3 个列表的列表,嵌套的 3 个列表各自有 3 个元素来代表井字游戏的一行方块
 
weird_board = [['_'] * 3] * 3 # 含有 3 个指向同一对象的引用的列表是毫无用处的
 
 
 
list.sort方法和内置函数sorted
与 list.sort 相反的是内置函数 sorted ,它会新建一个列表作为返回值(返回的是初始输入的参数)。
简单来说就是。sorted输出的排序,不会对源列表产生影响。list.sort会改变源列表
 
 
字典推导
列表推导和生成器表达式的概念就移植到了字典上,从而有了字典推
导(后面还会看到集合推导)。字典推导(dictcomp)可以从任何以键值对作为元素的可迭
代对象中构建出字典。
 
 
 
数组:
如果我们需要一个只包含数字的列表,那么 array.array 比 list 更高效。数组支持所有跟
可变序列有关的操作,包括 .pop 、 .insert 和 .extend 。另外,数组还提供从文件读取和存
入文件的更快的方法,如 .frombytes 和 .tofile 。
 
 
 
 

Python列表推导的更多相关文章

  1. Python列表推导式和嵌套的列表推导式

    列表推导式提供了一个更简单的创建列表的方法.常见的用法是把某种操作应用于序列或可迭代对象的每个元素上,然后使用其结果来创建列表,或者通过满足某些特定条件元素来创建子序列. 例如,假设我们想创建一个平方 ...

  2. python 列表推导式 - python基础入门(16)

    截止到目前为止,python基础内容已经学习了50%左右,在学习编程过程中,我们不仅要学习python语法,同时也需要学习如何把自己代码写的更美观,效率更高. 一.什么是推导式 推导式是从一个或者多个 ...

  3. python列表推导式详解

    推导式是Python中很强大的.很受欢迎的特性,具有语言简洁,简化代码,速度快等优点.推导式包括:1.列表推导式2.字典推导式3.集合推导式4.嵌套列表推导式注意: 字典和集合推导是最近才加入到Pyt ...

  4. Python 列表推导、迭代器与生成器

    1.列表推导 1 2 3 4 5 6 7 8 9 10 11 numbers = [i for i in range(10) if i % 2 == 0] print(numbers)   seq = ...

  5. python列表推导式详解 列表推导式详解 字典推导式 详解 集合推导式详解 嵌套列表推导式详解

    推导式是Python中很强大的.很受欢迎的特性,具有语言简洁,简化代码,速度快等优点.推导式包括:1.列表推导式2.字典推导式3.集合推导式4.嵌套列表推导式注意: 字典和集合推导是最近才加入到Pyt ...

  6. python列表推导同filter和map的比较

    首先介绍下filter和map: filter: filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表. 该接收两个参数,第一个为函数,第二个为序列,序列的每个元 ...

  7. python(列表推导式和生成器表达式)

    从母鸡下蛋的故事讲起 老母鸡 = ('鸡蛋%s'%i for i in range(10)) print(老母鸡) for 蛋 in 老母鸡: print(蛋) g = (i*i for i in r ...

  8. python列表推导式(扫盲)

    1) 简单了解: 所谓的列表推导式,就是指的轻量级循环创建列表. 格式: 列表推导式的常见形式: my_list = [ item for item in iterable] my_list: 列表名 ...

  9. 迭代列表不要For循环,这是Python列表推导式最基本的概念

    如果你还在使用 For 循环迭代列表,那么你需要了解了解列表推导式,看看它的基本概念都是什么. 列表解析式(List comprehension)或者称为列表推导式,是 Python 中非常强大和优雅 ...

随机推荐

  1. [WEB安全]XXE漏洞总结

    目录 0x00 XML基础 0x01 XML文档结构 0x02 DTD 0x03 实体 0x04 XXE漏洞 0x05 总结一些payload 0x06 XXE漏洞修复与防御 0x07 参考链接 0x ...

  2. Java核心复习——J.U.C AbstractQueuedSynchronizer

    第一眼看到AbstractQueuedSynchronizer,通常都会有这几个问题. AbstractQueuedSynchronizer为什么要搞这么一个类? 这个类是干什么的.有什么用? 这个类 ...

  3. 在CentOS7中安装zookeeper

    参考:https://www.linuxidc.com/Linux/2016-09/135052.htm 1.zookeeper运行需要jdk环境,先确保有配置jdk,可以参考此处 2.下载解压zoo ...

  4. 感知机模型到DNN模型

    参考资料 感知机模型:https://www.cnblogs.com/pinard/p/6042320.html DNN:https://www.cnblogs.com/pinard/p/641866 ...

  5. 在从myql服务器上 取消主从关系和重新构建主从关系

    取消主从关系 mysql -uroot -p mysql>show slave status\G; 查看主库是否为之前的ip mysql>change master to master_h ...

  6. linux redis 设置密码:

    在服务器上,这里以linux服务器为例,为redis配置密码. 1.第一种方式 (当前这种linux配置redis密码的方法是一种临时的,如果redis重启之后密码就会失效,) (1)首先进入redi ...

  7. 【转】Selenium-xpath详解

    1.XPATH是什么 XPATH是一门在XML文档中查找信息的语言,XPATH可用来在XML文档中对元素和属性进行遍历,主流的浏览器都支持XPATH,因为HTML页面在DOM中表示为XHTML文档.X ...

  8. LeetCode_28. Implement strStr()

    28. Implement strStr() Easy Implement strStr(). Return the index of the first occurrence of needle i ...

  9. (一)java面试易忘题目精选(1)

    1. int和Integer有什么区别? 答:Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类 ...

  10. 使用一般处理程序生成 JSON

    在 .NET 3.5 之后,定义在命名空间 System.Runtime.Serialization.Json 中的 DataContractJsonSerializer 可以帮助我们直接将一个对象格 ...