概念
序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
序列分为可变序列-列表List 和不可变序列-元祖tuple,字符串str
通用操作
1.成员资格
判断值是否属于序列
lst = [1,2,3,4,5]
st = 'xyz'
print(1 in lst)
print('x' in lst)
print('m' in st)
print('m' not in st)
True
False
False
True
2.链接与重复
lst1 = [1,2,3]
lst2 = ['a','b','c']
lst3 = 'hello'
print(lst1 + lst2) # 生成一个新的序列
lst1.append(4) # 改变了原有的序列
print(lst1)
print(lst1*2,lst2*2) #重复
print(lst1 + lst3) #类型不同的序列无法链接
[1, 2, 3, 'a', 'b', 'c']
[1, 2, 3, 4]
[1, 2, 3, 4, 1, 2, 3, 4] ['a', 'b', 'c', 'a', 'b', 'c']
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-42-787a611ed0e4> in <module>
6 print(lst1)
7 print(lst1*2,lst2*2)
----> 8 print(lst1 + lst3)
TypeError: can only concatenate list (not "str") to list
3.下标索引
lst = [1,2,3,4,5,6,7]
print(lst[0])
print(lst[-1])
1
7
4.切片
切片可以理解为一个值区间,左闭右开
lst = 'aervv'
lst1 = [1,2,3,4,5]
print(lst[0:2])
print(lst1[2:5])
print(lst1[:3]) #默认从头开始
print(lst1[2:]) #默认到最后一个
print(lst1[2:-1]) #左闭右开所以是选到倒数第二个值
ae
[3, 4, 5]
[1, 2, 3]
[3, 4, 5]
[3, 4]
5.步长
list[i:j:n] i和j为索引,n是步长
lst = [1,2,3,4,5,6,7,8,9]
print(lst[0:5:2])
print(lst[::2]) # 从第一个值开始截取直到最后 步长2
print(lst[1::2]) # 从第二个值开始截取直到最后 步长2
print(lst[:4:2]) #从第一个值截取到第四个值 步长2
[1, 3, 5]
[1, 3, 5, 7, 9]
[2, 4, 6, 8]
[1, 3]
6.内置全局函数
有很多,列举几个常用的
lst = [1,2,3,4,5,6,7,8,9,3]
lst1 = 'abcdefd'
print(len(lst)) #序列长度
print(max(lst), min(lst), sum(lst)) #序列全为数字才可以
print(lst1.index('d')) #序列中的值得索引,并且只会统计第一次出现的位置
print(lst1.count('d')) #序列中的值出现的次数
10
9 1 48
3
2
列表list常用操作
1.列表与生成器,可快速生成列表
#range函数只能生成整数
a = range(10) # 等价于 range(0,10)
b = range(4,7)
print(a, type(a))
print(list(b))
print(b[1]) #range虽然不是列表,但是也有索引
lst = list(range(0,10,2)) #range(start, stop[, step])
print(lst)
range(0, 10) <class 'range'>
[4, 5, 6]
5
[0, 2, 4, 6, 8]
2.添加元素
lst1 = [1,2,3]
lst2 = [3,4,5]
lst1.append(lst2) # 改变了原有的列表,把整个添加的对象作为一个值
print(lst1)
lst1 = [1,2,3]
lst1.extend(lst2) #改变了原有的列表,但是是把原有列表扩展
print(lst1)
[1, 2, 3, [3, 4, 5]]
[1, 2, 3, 3, 4, 5]
3.删除元素
lst = list(range(10))
lst.remove(8)
print(lst)
lst = list(range(10))
del lst[8]
print(lst)
#del可以删除切片
lst = list(range(10))
del lst[2:4]
print(lst)
#清空列表
lst.clear()
print(lst)
[0, 1, 2, 3, 4, 5, 6, 7, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 9]
[0, 1, 4, 5, 6, 7, 8, 9]
[]
4.插入元素
lst = list(range(10))
lst.insert(2, 'a')
print(lst)
[0, 1, 'a', 2, 3, 4, 5, 6, 7, 8, 9]
5.复制元素
#两种方法 有点像js的浅拷贝 深拷贝
lst = list(range(10))
lst2 = lst
lst[1] = 100
print(lst)
print(lst2)
lst = list(range(10))
lst2 = lst.copy()
lst[1] = 100
print(lst)
print(lst2)
[0, 100, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 100, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 100, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
6.排序
lst = [23,45,62,1,5]
lst.sort() #改变原列表
lst.sort(reverse=True)
lst1 = sorted(lst) #生成新列表排序
lst2 = ['abc', 'xad', 'fed']
lst2.sort() #按首字母顺序
lst3 = [23,45,62,1,5,'s']
#lst3.sort() # 报错
print(lst,lst)
print(lst,lst1)
print(lst2)
[62, 45, 23, 5, 1] [62, 45, 23, 5, 1]
[62, 45, 23, 5, 1] [1, 5, 23, 45, 62]
['abc', 'fed', 'xad']
元组
不可变的“列表”,主要看一下和列表不同
tup1 = ('asd', 2, 'sd')
tup2 = (1,2,4)
tup3 = 'a', 'b', 'c' #可以不加括号
tup4 = (3,) #只有一个元素时,需要在后面加逗号
#不可变 所以列表的添加修改等方法都无法执行
#del tup1[1] #元组不能单独删除内部元素,只能通过del删除整个元组
del tup1
#print(tup1) #已经没有tup1这个元组 ,所以会报错
lst = list(range(10))
tup = tuple(lst) #列表转元组
print(tup)
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
字符串
1.修改字符串
st = 'hello world'
st2 = st.replace('world', 'liming') #替换指定字符串 并生成一个新的str
print(st, st2)
st = 'hahaha'
st2 = st.replace('ha','he',2)
print(st2)
hello world hello liming
heheha
2.字符串分割
st = 'nihao,liming,zaina'
lst = st.split(',')
print(lst,type(lst))
['nihao', 'liming', 'zaina'] <class 'list'>
3.字符串连接
m = '_'
lst = ['nihao','limig','zaina']
st2 = m.join(lst) #和js里面的用法刚好相反 js arr.join('_')
print(st2)
nihao_limig_zaina
4.字符串常用函数
st = 'nihao123ZainaLIming'
print(st.startswith('n')) #判断开始
print(st.endswith('ming')) #判断以什么结尾
print(st.upper()) #全部大写
print(st.lower()) #全部小写
print(st.swapcase()) #大小写互换
print(st.capitalize()) #首字母大写
st = '12314'
print(st.isnumeric()) #是否所有字符都是数字
st = 'sada'
print(st.isalnum()) #是否所有字符都是字母
st = 'asd '
print(st.rstrip()) #删除末尾空格
True
True
NIHAO123ZAINALIMING
nihao123zainaliming
NIHAO123zAINAliMING
Nihao123zainaliming
True
True
asd
5.格式化字符串 %
name = 'liming'
sayhai = "%s 是个好人" %name #s str类型
print(sayhai)
#关于数字的处理还有很多方法 需要的时候自行查询吧
price = 123
sayhai = "%i 块钱" %price #i 整型
print(sayhai)
price = 3.4
sayhai = "%f 块钱" %price #f 浮点型
print(sayhai)
score = 33
score2 = 56
all = '小明成绩%i,小红成绩%i'%(score, score2)
print(all)
liming 是个好人
123 块钱
3.400000 块钱
小明成绩33,小红成绩56
6.格式化字符串 format
st = '你好{}'
print(st.format('!haha'))
st = '{}{}{}'.format('a', 'b', 'c')
print(st)
st = '{0}{2}{1}{0}'.format('a', 'b', 'c') #{}里面的数字对应format的参数索引
print(st)
st = '我的工作是{work}'.format(work = 'it')
print(st)
你好!haha
abc
acba
我的工作是it