Python-序列详解

概念

序列是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

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值