【python】入门学习(六)
type() #检查变量或值得数据类型
>>> type(5) <class 'int'>
序列:包括字符串、元组和列表。序列都可以用索引、切片、len()(计算元素个数)、x in s 判断s中是否包含x
元组: 不可变,如果修改需要大量的复制,即彻底重新赋值
空元组: ()
单个元素的元组: (x,) #注意一定要有','
多个元素的元组: (x, y, z) 或 (x, y, z,) #最后的','可有可无
>>> item = (6, 'apple', (1,2)) >>> item (6, 'apple', (1, 2)) >>> item[0] 6 >>> item[-1] (1, 2) >>> item[-1][0] 1 >>> item = () >>> type(item) <class 'tuple'> >>> item = (5) >>> type(item) <class 'int'> >>> item = (5,) >>> type(item) <class 'tuple'>
删除元组的第一个元素
>>> item = (1,2,3,4,5) >>> item2 = item[1:] >>> item = item2 >>> item (2, 3, 4, 5)
元组相关函数:
x in tup #x是否在元组内
len(tup) #元组中的元素数
tup.count(x) #元素x在元组中出现的次数
tup.index(x) #元组中第一个x的索引,如没有则出错
+、* #拼接
>>> item (2, 3, 4, 5) >>> item*2 (2, 3, 4, 5, 2, 3, 4, 5) >>> item + (1,2,3) (2, 3, 4, 5, 1, 2, 3)
列表:可以改变,用[]括起,单元素的末尾不一定要','
>>> numbers = [1,2,3,4,5,6,7] >>> numbers [1, 2, 3, 4, 5, 6, 7] >>> type(numbers) <class 'list'> >>> numbers * 2 [1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7] >>> numbers[1:] [2, 3, 4, 5, 6, 7] >>> numbers[-3:] [5, 6, 7] >>> numbers[0]=100 >>> numbers [100, 2, 3, 4, 5, 6, 7]
列表元素指向相应的值,而不是包含。用自引用说明:
>>> numbers [100, 2, 3, 4, 5, 6, 7] >>> numbers[0] = numbers >>> numbers [[...], 2, 3, 4, 5, 6, 7]
列表的相关函数:
s.append(x) #在列表s末尾添加元素x
#numnote.py def numnote(lst): msg = [] for num in lst: if num < 0: s = str(num) + 'is negative' elif 0 <= num <= 9: s = str(num) + 'is digit' else: break msg.append(s) return msg
>>> import numnote >>> numnote.numnote([1,-1,2,22]) ['1is digit', '-1is negative', '2is digit']
若要逐行打印
>>> for msg in numnote([1,2,3,10]): print(msg) 1is digit 2is digit 3is digit >>> print('\n'.join(numnote([1,2,3,10]))) 1is digit 2is digit 3is digit
s.extend() #在末尾添加一个序列
>>> lst = [] >>> lst.extend('cat') >>> lst ['c', 'a', 't']
s.pop(i) #删除并返回索引为i的元素,默认删除最后一个
>>> lst ['c', 'a', 't'] >>> lst.pop() 't' >>> lst.pop(0) 'c' >>> lst ['a']
s.remove(x) #删除s中的第一个x元素,但不返回值
>>> lst ['a', 'h', 'e', 'l', 'l', 'o', ',', 'e', 'v', 'e', 'r', 'y', 'o', 'n', 'e'] >>> lst.remove('e') >>> lst ['a', 'h', 'l', 'l', 'o', ',', 'e', 'v', 'e', 'r', 'y', 'o', 'n', 'e']
s.reverse() #反转列表元素
>>> lst ['a', 'h', 'l', 'l', 'o', ',', 'e', 'v', 'e', 'r', 'y', 'o', 'n', 'e'] >>> lst.reverse() >>> lst ['e', 'n', 'o', 'y', 'r', 'e', 'v', 'e', ',', 'o', 'l', 'l', 'h', 'a']
s.sort() #对元素排序 从小到大 要从大到小排序在调用一次reverse就可以了 也可以对列表中的元组排序
>>> lst ['e', 'n', 'o', 'y', 'r', 'e', 'v', 'e', ',', 'o', 'l', 'l', 'h', 'a'] >>> lst.sort() >>> lst [',', 'a', 'e', 'e', 'e', 'h', 'l', 'l', 'n', 'o', 'o', 'r', 'v', 'y'] >>> lst.reverse() >>> lst ['y', 'v', 'r', 'o', 'o', 'n', 'l', 'l', 'h', 'e', 'e', 'e', 'a', ',']
>>> lst = [(1,2),(1,-1),(2,)] >>> lst [(1, 2), (1, -1), (2,)] >>> lst.sort() >>> lst [(1, -1), (1, 2), (2,)]
列表解析:用于快速创建列表
>>> [n*n for n in range(1,11)] [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
>>> [n*n for n in range(1,11)] [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] >>> [2*n**3+4 for n in range(1,11)] [6, 20, 58, 132, 254, 436, 690, 1028, 1462, 2004] >>> [c for c in 'pizza'] ['p', 'i', 'z', 'z', 'a'] >>> [c.upper() for c in 'pizza'] ['P', 'I', 'Z', 'Z', 'A']
使用解析进行筛选:
>>> nums = [-1,0,6,-4,2,5] >>> result = [n for n in nums if n > 0] >>> result [6, 2, 5]
删掉元音
>>> ''.join([c for c in 'Apple' if c.lower() not in 'aeiou']) 'ppl'
不要方括号也可以,将得到生成器表达式
>>> ''.join(c for c in 'Apple' if c.lower() not in 'aeiou') 'ppl'
字典:也称关联数组、映射或散列表 用{}表示
可以利用键来访问值,键不可重复不可修改 下面的'red'就是键,2是值
>>> color = {'red':2, 'blue':1, 'green':3} >>> color['red'] 2 >>> color['blue']=0 >>> color {'green': 3, 'blue': 0, 'red': 2}
相关函数
items 、 keys、 values、 get、pop、 popitem、 clear、 copy 、fromkeys 、setdefault、 update
#视图
>>> k = color.keys() >>> for i in k:print(i) green blue red
集合:只包含键,没有相关联的值
删除列表中重复的元素
>>> lst = [1,1,2,2,3,3,3] >>> lst [1, 1, 2, 2, 3, 3, 3] >>> s = set(lst) >>> s {1, 2, 3}