1、Python的系列数据类型
Python没有提供直接创建数组的功能,但是内置的系列数据类型包括:
元组(tuple)、列表(list)、字符串(str)和字节数据(bytes和bytearray)
2、基本操作
(1)len(), max(), min(), sum()
(2)s[5]索引下标从左到右为: 0~n-1
从右到左为:-1~ -n
(3)系列的切片操作:s[i : j] 或s[i: j :k ]:
i 为开始下标,j为结束下标,k为步长。如果省略i, 则下标从0开始; 如果没有j,则直到系列结束为止; 如果省略k ,则步长为1。其中下标可以为负数,如果截取范围内没有数据,则返回空元组;如果超过下标范围,不报错。
(4)连接和重复操作: s1+s2 或者s*n 或者n*s
连接操作符+ 和重复操作符* 支持符合赋值运算,即:+= 和*=
(5)成员关系操作:
(6)比较运算操作: (<, <=, ==, !=, >=, >)
字符串比较运算按顺序逐个元素进行比较
(7)内置运算:
排序运算:key是用于比较键值的函数(带一个参数)
sort(iterable, key = None, reverse = False) 正序
sort(iterable, key = None, reverse = True) 反序
all(iterable)和any(iterable):判断系列的元素是否全部个部分为True
list的方法:
s.append(x) #把x追加到s尾部
s.clear() # 删除所有元素
s.copy() #复制列表
s.extend(t) #把系列t加到s尾部
s.insert(i,x) #在下标i后插入x
s.pop([i]) #返回并移除下标i处对象,省略i时为最后对象。若超出则IndexError
s.remove(x) #移除列表s中第一个出现的x。若不存在x则ValueError
s.reverse() #列表反转
s.sort() # 列表排序
#按条件迭代,并计算生成列表
#[expr for i1 in t1 ... for iN in tN if cond_expr]
print( [i for i in range(10) if i%2 == 0] )
#Output: [2,4,6,8]
print( [(i,i**2) for i in range(5)] )
#Output: [(0, 0), (1, 1), (2, 4), (3, 9), (4, 16)]
print( [(x,y,x*y) for x in range(1,4) for y in range(1,4) if x>=y] )
#Output: [(1, 1, 1), (2, 1, 2), (2, 2, 4), (3, 1, 3), (3, 2, 6), (3, 3, 9)]
(8)系列拆封
- 赋值号两边的长度相同:
data = (1001,'LI',(80,79,93))
side1,name1,scores1 = data
print (scores1) # Output: (80,79,93)
side2,name2,(chinese,math,english) = data
print(math) #Output: 79
- 只需要使用部分数据,其他位置可以使用临时变量"_":
data = (80,79,93)
_,math1,_ = data
print(math1) #Output: 79
data = (80,79,93)
_, *math2 = data
print(math2) #Output: [79,93]
- 赋值号两边的长度不同:
first_1, *middle_1, last_1 = range(10)
print(middle_1) #[1, 2, 3, 4, 5, 6, 7, 8]
first_2, second_2,third2,*last_2 = range(10)
print(last_2) #[3, 4, 5, 6, 7, 8, 9]
*first_3, last3,last2,last1 = range(10)
print(first_3) #[0, 1, 2, 3, 4, 5, 6]
#去掉最高分和最低分后求平均值
first, *middles, last = sorted([23,89,78,74,42,34,24,98])
sum(middles)/len(middles) #56.833333333333336