列表(list)
列表定义
- 列表是有序集合,没有固定大小,能够保存任意数量任意类型的 Python 对象,语法为 [元素1, 元素2, …, 元素n] 。
注意:
- 关键点是中括号
[] 和逗号 , 中括号 把所有元素绑在一起逗号 将每个元素一一分开
列表的创建
- 创建普通的列表
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x = [2, 3, 4, 5, 6, 7]
- 利用 range() 创建列表
x = list(range(10))
x = list(range(1, 11, 2))
- 利用推导式创建列表
x = [0] * 5
x = [0 for i in range(5)]
x = [i for i in range(10)]
x = [i for i in range(1, 10, 2)]
x = [i for i in range(10, 1, -2)]
x = [i ** 2 for i in range(1, 10)]
x = [i for i in range(100) if (i % 2) != 0 and (i % 3) == 0]
- 创建一个 4×3的二维数组
x = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [0, 0, 0]]
注意:
- 由于list的元素可以是
任何对象 ,因此列表中所保存的是对象的指针 。即使保存一个简单的 [1,2,3],也有3个指针和3个整数对象。 - x = [a] * 4 操作中,只是创建4个指向list的引用,所以一旦
a 改变 , x 中4个 a 也会随之改变 。
- 创建一个混合列表
mix = [1, 'lsgo', 3.14, [1, 2, 3]]
- 创建一个空列表
empty = []
- 列表不像元组,列表内容
可更改 (mutable),因此附加 ( append , extend )、插入 ( insert )、删除(remove, pop ) 这些操作都可以用在它身上。
向列表中添加元素
list.append(obj) 在列表末尾添加新的对象,只接受一个参数 ,参数可以是任何数据类型,被追加的元素在 list中保持着原结构类型。
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.append('Thursday')
print(x)
- 此元素如果是一个
list ,那么这个 list 将作为一个整体 进行追加,注意 append() 和 extend() 的区别。
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.append(['Thursday', 'Sunday'])
print(x)
- list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.extend(['Thursday', 'Sunday'])
print(x)
- 严格来说
append 是追加,把一个东西整体 添加在列表后,而 extend 是扩展,把一个东西里的所有元素 添加在列表后。
list.insert(index, obj) 在编号 index 位置前插入 obj ,index从0 开始。
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.insert(2, 'Sunday')
print(x)
删除列表中的元素
list.remove(obj) 移除列表中某个值的第一个匹配项 。
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
x.remove('Monday')
print(x)
list.pop([index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
y = x.pop(0)
print(y)
remove 和 pop 都可以删除元素,前者是指定具体要删除的元素 ,后者是指定一个索引 。
del X[var1, var2 ……] 删除单个或多个对象。
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
del x[0:2]
print(x)
- 如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用 del 语句;如果你要在删除元素后还能继续使用它,就使用方法 pop() 。
获取列表中的元素
- 通过元素的
索引值 ,从列表获取单个元素,注意,列表索引值是从0 开始的。 - 通过将索引指定为-1,可让Python返回最后一个列表元素,索引 -2 返回倒数第二个列表元素,以此类推。
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(x[0])
print(x[-1])
- 切片的通用写法是 start : stop : step。
(1)情况1:“start :” 以 step 为 1 (默认) 从编号 start 往列表尾部 切片。
x = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(x[3:])
print(x[-3:])
(2)情况2:": stop" 以 step 为 1 (默认) 从列表头部 往编号 stop 切片。
week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[:3])
print(week[:-3])
(3) 情况3:“start : stop” 以 step 为 1 (默认) 从编号 start 往编号 stop 切片。
week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[1:3])
print(week[-3:-1])
(4)情况4:“start : stop : step” 以具体的 step 从编号 start 往编号 stop 切片。注意最后把 step 设为 -1,相当于将列表反向排列。
week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[1:4:2])
print(week[:4:2])
print(week[1::2])
print(week[::-1])
(5)情况5:" : " 复制 列表中的所有 元素(浅拷贝)。
week = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
print(week[:])
列表常用操作符
- 等号操作符:==
- 连接操作符:+
- 重复操作符:*
- 成员关系操作符:in、not in
注意:等号 ==,只有成员、成员位置 都相同 时才返回True。 列表拼接也有两种方式,用加号 + 和乘号 * ,前者首尾拼接,后者复制拼接 。
list1 = [123, 456]
list2 = [456, 123]
list3 = [123, 456]
print(list1 == list2)
print(list1 == list3)
list4 = list1 + list2
print(list4)
list5 = list3 * 3
print(list5)
print(123 in list3)
print(456 not in list3)
注意:前面三种方法( append , extend , insert )可对列表增加元素,它们没有返回值,是直接修改了原数据对象 。将两个list相加,需要创建新的 list 对象,从而需要消耗额外的内存,特别是当 list 较大 时,尽量不要使用 “+” 来添加list 。
列表的其它方法
list.count(obj) 统计某个元素 在列表中出现的次数 。
list1 = [123, 456] * 3
print(list1)
num = list1.count(123)
print(num)
list.index(x[, start[, end]]) 从 列表中找出某个值第一个匹配项的索引位置 。
list1 = [123, 456] * 5
print(list1.index(123))
print(list1.index(123, 1))
print(list1.index(123, 3, 7))
x = [123, 456, 789]
x.reverse()
print(x)
list.sort(key=None, reverse=False) 对原列表进行排序 。 注意:
key :主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。reverse :排序规则, reverse = True 降序, reverse = False 升序(默认) 。- 该方法
没有返回值 ,但是会对列表的对象进行排序。
x = [123, 456, 789, 213]
x.sort()
print(x)
x.sort(reverse=True)
print(x)
def takeSecond(elem):
return elem[1]
x = [(2, 2), (3, 4), (4, 1), (1, 3)]
x.sort(key=takeSecond)
print(x)
x.sort(key=lambda a: a[0])
print(x)
元组(tuple)
元组定义语法为: (元素1, 元素2, ..., 元素n)
小括号 把所有元素绑在一起逗号 将每个元素一一分开
创建和访问一个元组
- Python 的元组与列表类似,不同之处在于
tuple被创建后就不能对其进行修改 ,类似字符串。 元组 使用小括号 ,列表 使用方括号 。- 创建元组可以用小括号 (),也可以什么都不用,为了可读性,建议还是用 ()。
t1 = (1, 10.31, 'python')
t2 = 1, 10.31, 'python'
print(t1)
print(t2)
tuple1 = (1, 2, 3, 4, 5, 6, 7, 8)
print(tuple1[1])
print(tuple1[5:])
print(tuple1[:5])
tuple2 = tuple1[:]
print(tuple2)
- 元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用:
temp = (1)
print(type(temp))
temp = (1,)
print(type(temp))
print(8 * (8))
print(8 * (8,))
- 以创建二维元组:
nested = (1, 10.31, 'python'), ('data', 11)
print(nested)
- 元组中可以用整数来对它进行
索引 (indexing) 和切片 (slicing) ,不严谨的讲,前者是获取单个元素,后者是获取一组元素。接着上面二维元组的例子,先看看索引的代码。
print(nested[0])
print(nested[0][0], nested[0][1], nested[0][2])
print(nested[0][0:2])
更新和删除一个元组
week = ('Monday', 'Tuesday', 'Thursday', 'Friday')
week = week[:2] + ('Wednesday',) + week[2:]
print(week)
t1 = (1, 2, 3, [4, 5, 6])
print(t1)
t1[3][0] = 9
print(t1)
元组相关的操作符
- 连接操作符 +
- 重复操作符 *
- 成员关系操作符 in 、 not in
元组拼接 (concatenate) 有两种方式,用加号 + 和乘号 * ,前者首尾拼接,后者复制拼接 。
t1 = (2, 3, 4, 5)
t2 = ('老马的程序人生', '小马的程序人生')
t3 = t1 + t2
print(t3)
t4 = t2 * 2
print(t4)
内置方法
元组大小和内容都不可更改,因此只有 count 和 index 两种方法。
- count(‘t’) 是记录在元组 t 中该元素出现几次。
- index(t) 是找到该元素在元组 t 的索引。
t = (1, 10.31, 'python')
print(t.count('python'))
print(t.index(10.31))
解压元组
- 解压(unpack)一维元组(有几个元素左边括号定义几个变量)
t = (1, 10.31, 'python')
(a, b, c) = t
print(a, b, c)
- 解压二维元组(按照元组里的元组结构来定义变量)
t = (1, 10.31, ('OK', 'python'))
(a, b, (c, d)) = t
print(a, b, c, d)
- 如果你只想要元组其中几个元素,用
通配符* ,英文叫 wildcard,在计算机语言中代表一个或多个元素。下例就是把多个元素丢给了 rest 变量 。如果你根本不在乎 rest 变量,那么就用通配符*加上下划线_ 。
t = 1, 2, 3, 4, 5
a, b, *rest, c = t
print(a, b, c)
print(rest)
a, b, *_ = t
print(a, b)
字符串
- Python 中字符串被定义为
引号 之间的字符集合 。 - Python 支持使用
成对的 单引号 或 双引号 。
t2 = "I love Python!"
print(t2)
print(5 + 8)
print('5' + '8')
- 如果字符串中需要出现单引号或双引号,可以使用转义符号 \ 对字符串中的符号进行转义。
print('let\'s go')
print("let's go")
print('C:\\now')
print("C:\\Program Files\\Intel\\Wifi\\Help")
1234
Python 的常用转义字符
\\ 反斜杠符号 \' 单引号 \" 双引号 \n 换行 \t 横向制表符(TAB) \r 回车
- 原始字符串只需要在
字符串前边加 一个英文字母 r 即可。
print(r'C:\Program Files\Intel\Wifi\Help')
字符串的切片与拼接
用+ 拼接
str1 = 'I Love LsgoGroup'
print(str1[:6])
print(str1[5])
print(str1[:6] + " 插入的字符串 " + str1[6:])
字符串的常用内置方法
capitalize() 将字符串的第一个字符 转换为大写 。lower() 转换字符串中所有大写字符为小写 。upper() 转换字符串中的小写字母为大写 。swapcase() 将字符串中大写转换为小写,小写转换为大写。 count(str, beg= 0,end=len(string)) 返回 str 在 string 里面出现的次数 ,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数。endswith(suffix, beg=0, end=len(string)) 检查字符串是否以指定子字符串 suffix 结束 ,如果是,返回True,否则返回 False。如果 beg 和 end 指定值,则在指定范围内检查。startswith(substr, beg=0,end=len(string)) 检查字符串是否以指定子字符串 substr 开头 ,如果是,返回 True,否则返回 False。如果 beg 和 end 指定值,则在指定范围内检查。find(str, beg=0, end=len(string)) 检测 str 是否包含在字符串中 ,如果指定范围 beg 和 end ,则检查是 否包含在指定范围内,如果包含,返回开始的索引值,否则返回 -1。rfind(str, beg=0,end=len(string)) 类似于 find() 函数,不过是从右边开始查找 。isnumeric() 如果字符串中只包含数字字符 ,则返回 True,否则返回 False。ljust(width[, fillchar]) 返回一个原字符串左对齐 ,并使用 fillchar (默认空格)填充至长度 width 的新字 符串。rjust(width[, fillchar]) 返回一个原字符串右对齐 ,并使用 fillchar (默认空格)填充至长度 width 的新字 符串。lstrip([chars]) 截掉字符串左边 的空格 或指定字符 。rstrip([chars]) 删除字符串末尾 的空格 或指定字符 。strip([chars]) 在字符串上执行 lstrip() 和 rstrip() 。partition(sub) 找到子字符串sub,把字符串分为一个三元组 (pre_sub,sub,fol_sub) ,如果字符串中不包含sub则返回 (‘原字符串’,’’,’’) 。rpartition(sub) 类似于 partition() 方法,不过是从右边开始查找。replace(old, new [, max]) 把 将字符串中的 old 替换 成 new ,如果 max 指定,则替换不超过 max 次。split(str="", num) 不带参数默认是以空格 为分隔符切片字符串 ,如果 num 参数有设置,则仅分隔 num 个子字符串,返回切片后的子字符串拼接的列表。splitlines([keepends]) 按照行(’\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为False,不包含换行符,如果为 True,则保留换行符。maketrans(intab, outtab) 创建字符映射的转换表,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。translate(table, deletechars="") 根据参数 table 给出的表,转换字符串的字符,要过滤掉的字符放 到 deletechars 参数中。
字符串格式化
- Python format 格式化函数
str = "{0} Love {1}".format('I', 'Lsgogroup')
print(str)
str = "{a} Love {b}".format(a='I', b='Lsgogroup')
print(str)
str = "{0} Love {b}".format('I', b='Lsgogroup')
print(str)
str = '{0:.2f}{1}'.format(27.658, 'GB')
print(str)
-
Python 字符串格式化符号 %c 格式化字符及其ASCII码 %s 格式化字符串,用str()方法处理对象 %r 格式化字符串,用rper()方法处理对象 %d 格式化整数 %o 格式化无符号八进制数 %x 格式化无符号十六进制数 %X 格式化无符号十六进制数(大写) %f 格式化浮点数字,可指定小数点后的精度 %e 用科学计数法格式化浮点数 %E 作用同%e,用科学计数法格式化浮点数 %g 根据值的大小决定使用%f或%e %G 作用同%g,根据值的大小决定使用%f或%E -
格式化操作符辅助指令 m.n m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话) - 用做左对齐(减号) + 在正数前面显示加号( + ) # 在八进制数前面显示零(‘0’),在十六进制前面显示’0x’或者’0X’(取决于用的是’x’还是’X’) 0 显示的数字前面填充’0’而不是默认的空格
字典(dict)
- 序列是以连续的整数为索引,与此不同的是,字典以"
关键字 "为索引,关键字可以是任意不可变类型 ,通常用字符串或数值 。 - 字典是 Python 唯一的一个
映射类型 ,字符串、元组、列表属于序列类型。 判断一个数据类型是否可变的两种方法: - 用 id(X) 函数,对 X 进行某种操作,比较操作前后的 id ,如果不一样,则 X 不可变,如果一样,则X可变。
- 用 hash(X) ,只要不报错,证明 X 可被哈希,即不可变,反过来不可被哈希,即可变。
i = 1
print(id(i))
i = i + 2
print(id(i))
l = [1, 2]
print(id(l))
l.append('Python')
print(id(l))
print(hash('Name'))
print(hash((1, 2, 'Python')))
print(hash([1, 2, 'Python']))
print(hash({1, 2, 3}))
结论:
数值、字符和元组 都能被哈希,因此它们是不可变类型 。列表、集合、字典 不能被哈希,因此它是可变类型 。
字典定义
字典 是无序的键:值( key:value 对 集合,键必须是互不相同的(在同一个字典之内)。
- dict 内部存放的顺序和 key 放入的顺序是没有关系的。
- dict 查找和插入的速度极快,不会随着 key 的增加而增加,但是需要占用大量的内存。
字典 定义语法为 {元素1, 元素2, …, 元素n}
- 其中每一个元素是一个键值对:
键:值 ( key:value ) - 关键点是
大括号 {} ,逗号 , 和冒号 : 大括号 :把所有元素绑在一起逗号 :将每个键值对分开冒号 : 将键和值分开
创建和访问字典
brand = ['李宁', '耐克', '阿迪达斯']
slogan = ['一切皆有可能', 'Just do it', 'Impossible is nothing']
print('耐克的口号是:', slogan[brand.index('耐克')])
dic = {'李宁': '一切皆有可能', '耐克': 'Just do it', '阿迪达斯': 'Impossible is nothing'}
print('耐克的口号是:', dic['耐克'])
注意:如果我们取的键 在字典中不存在 ,会直接报错KeyError 。
dic1 = {1: 'one', 2: 'two', 3: 'three'}
print(dic1)
print(dic1[1])
print(dic1[4])
dic2 = {'rice': 35, 'wheat': 101, 'corn': 67}
print(dic2)
print(dic2['rice'])
dict():创建一个空的字典。 通过 key 直接把数据放入字典中,但一个 key 只能对应一个 value ,多次对一个 key 放入 value ,后面的值会把前面的值冲掉。
dic = dict()
dic['a'] = 1
dic['b'] = 2
dic['c'] = 3
print(dic)
dic['a'] = 11
print(dic)
dic['d'] = 4
print(dic)
dict(mapping)
dic1 = dict([('apple', 4139), ('peach', 4127), ('cherry', 4098)])
print(dic1)
dic2 = dict((('apple', 4139), ('peach', 4127), ('cherry', 4098)))
print(dic2)
dict(**kwargs) 这种情况下,键只能为字符串类型,并且创建的时候字符串不能加引号 ,加上就会直接报语法错误。
dic = dict(name='Tom', age=10)
print(dic)
字典的内置方法
dict.fromkeys(seq[, value]) 用于创建一个新字典,以序列 seq 中元素做字典的键 , value 为字典所有键对应的初始值。
seq = ('name', 'age', 'sex')
dic1 = dict.fromkeys(seq)
print("新的字典为 : %s" % str(dic1))
dic2 = dict.fromkeys(seq, 10)
print("新的字典为 : %s" % str(dic2))
dic3 = dict.fromkeys(seq, ('小马', '8', '男'))
print("新的字典为 : %s" % str(dic3))
dict.keys() 返回一个可迭代对象,可以使用 list() 来转换为列表,列表为字典中的所有键 。
dic = {'Name': 'lsgogroup', 'Age': 7}
print(dic.keys())
lst = list(dic.keys())
print(lst)
dict.values() 返回一个迭代器,可以使用 list() 来转换为列表,列表为字典中的所有值 。dict.items() 以列表返回可遍历的 (键, 值) 元组数组 。dict.get(key, default=None) 返回指定键的值 ,如果值不在字典中返回默认值。dict.setdefault(key, default=None) 和 get() 方法 类似, 如果键不存在于字典中,将会添加键并将值设为默认值。key in dict in 操作符用于判断键是否存在于字典中,如果键在字典dict里返回true ,否则返回false 。 而 not in 操作符刚好相反,如果键在字典 dict 里返回 false ,否则返回 true 。dict.pop(key[,default]) 删除 字典给定键 key所对应的值 ,返回值为被删除的值。 key值必须给出。若 key不存在,则返回 default 值。del dict[key] 删除 字典给定键 key 所对应的值 。dict.popitem()随机返回并删除字典中的一对键和值 ,如果字典已经为空,却调用了此方法,就报出KeyError异常 。dict.clear() 用于删除 字典内所有元素 。dict.copy() 返回一个字典的浅复制 。(注意赋值和浅复制的区别)dict.update(dict2) 把字典参数dict2的 key:value 对更新到字典dict里 。
集合(set)
python 中 set 与 dict 类似,也是一组 key 的集合,但不存储 value 。由于key不能重复 ,所以,在set中,没有重复的key 。
集合的创建
- 先创建对象再加入元素。
- 在创建空集合的时候只能使用
s = set() ,因为s = {}创建的是空字典。 - 直接把一堆元素用花括号括起来
{元素1, 元素2, ..., 元素n} 。 重复元素 在 set 中会被自动过滤 。
- 使用s
et(value) 工厂函数,把列表或元组转换成集合。
a = set('abracadabra')
print(a)
b = set(("Google", "Lsgogroup", "Taobao", "Taobao"))
print(b)
c = set(["Google", "Lsgogroup", "Taobao", "Google"])
print(c)
访问集合中的值
- 可以使用
len() 內建函数得到集合的大小。 - 可以使用
for 把集合中的数据一个个读取出来。 - 可以通过 in 或 not in 判断一个元素是否在集合中已经存在。
集合中内置方法
set.add(elmnt) 用于给集合添加元素 ,如果添加的元素在集合中已存在,则不执行任何操作。
fruits = {"apple", "banana", "cherry"}
fruits.add("orange")
print(fruits)
set.update(set) 用于修改当前集合 ,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略。
x = {"apple", "banana", "cherry"}
y = {"google", "baidu", "apple"}
x.update(y)
print(x)
y.update(["lsgo", "dreamtech"])
print(y)
set.remove(item) 用于移除 集合中的指定元素 。如果元素不存在,则会发生错误。
fruits = {"apple", "banana", "cherry"}
fruits.remove("banana")
print(fruits)
set.discard(value) 用于移除 指定的集合元素 。 remove()方法在移除一个不存在的元素时会发生错误,而discard()方法不会。set.pop() 用于随机移除 一个元素。
fruits = {"apple", "banana", "cherry"}
x = fruits.pop()
print(fruits)
print(x)
由于 set 是无序和无重复元素的集合,所以两个或多个 set 可以做数学意义上的集合操作 。
set.intersection(set1, set2 ...)或set1 & set2 返回两个集合的交集 。set.intersection_update(set1, set2 ...) 交集,在原始的集合上移除不重叠的元素。set.union(set1, set2...)或set1 | set2 返回两个集合的并集 。set.difference(set)或set1 - set2 返回集合的差集 。set.difference_update(set) 集合的差集 ,直接在原来的集合中移除元素,没有返回值 。set.symmetric_difference(set)或set1 ^ set2 返回集合的异或 。set.symmetric_difference_update(set) 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。set.issubset(set)或set1 <= set2 判断集合是不是被其他集合包含,如果是则返回 True,否则返回 False。set.issuperset(set)或set1 >= set2 用于判断集合是不是包含其他集合,如果是则返回 True,否则返回 False。set.isdisjoint(set) 用于判断两个集合是不是不相交,如果是返回 True,否则返回 False。
序列
序列类型包括字符串、列表、元组、集合和字典 。
针对序列的内置函数
- list(sub) 把一个可迭代对象转换为列表。
- tuple(sub) 把一个可迭代对象转换为元组。
- str(obj) 把obj对象转换为字符串。
- len(s) 返回对象(字符、列表、元组等)长度或元素个数。
- max(sub) 返回序列或者参数集合中的最大值。
- min(sub) 返回序列或参数集合中的最小值。
- sum(iterable[, start=0]) 返回序列 iterable 与可选参数 start 的总和。
print(sum([1, 3, 5, 7, 9]))
print(sum([1, 3, 5, 7, 9], 10))
print(sum((1, 3, 5, 7, 9)))
print(sum((1, 3, 5, 7, 9), 20))
- sorted(iterable, key=None, reverse=False) 对所有可迭代的对象进行排序操作。
- iterable – 可迭代对象。
- key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
- reverse – 排序规则, reverse = True 降序 , reverse = False 升序(默认)。
- 返回重新排序的列表。
x = [-8, 99, 3, 7, 83]
print(sorted(x))
print(sorted(x, reverse=True))
t = ({"age": 20, "name": "a"}, {"age": 25, "name": "b"}, {"age": 10, "name": "c"})
x = sorted(t, key=lambda a: a["age"])
print(x)
- reversed(seq) 函数返回一个反转的迭代器。
s = 'lsgogroup'
x = reversed(s)
print(x)
print(list(x))
t = ('l', 's', 'g', 'o', 'g', 'r', 'o', 'u', 'p')
print(list(reversed(t)))
r = range(5, 9)
print(list(reversed(r)))
x = [-8, 99, 3, 7, 83]
print(list(reversed(x)))
enumerate(sequence, [start=0]) 用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列 ,同时列出数据和数据下标 ,一般用在 for 循环当中。
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
a = list(enumerate(seasons))
print(a)
b = list(enumerate(seasons, 1))
print(b)
for i, element in a:
print('{0},{1}'.format(i, element))
zip(iter1 [,iter2 [...]]) 用于将可迭代的对象作为参数,将对象中对应的元素打包成 一个个元组 ,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。可以使用 list() 转换来输出列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
a = [1, 2, 3]
b = [4, 5, 6]
c = [4, 5, 6, 7, 8]
zipped = zip(a, b)
print(zipped)
print(list(zipped))
zipped = zip(a, c)
print(list(zipped))
a1, a2 = zip(*zip(a, b))
print(list(a1))
print(list(a2))
|