Python学习-Day3-运算符、序列

1026-徐同学

发表文章数:41

首页 » Python » 正文

可变字符串

字符串属于不可变对象,不支持原地修改,如果需要修改其中的值,只能创建新的字符串对象。可以使用io.StringIO对象或array模块。

>>> import io
>>>> s = "Hello"
>>> sio = io.StringIO(s)
>>> sio.seek(2)
2
>>> sio.getvalue()
'Hello'
>>> sio.write("g")
1
>>> sio.getvalue()
'Heglo'

运算符

基本运算符

Python学习-Day3-运算符、序列

  1. 比较运算符可以连用,并且含义和我们日常使用完全一致。
  2. 位操作
>>> a = 0b11001
>>> b = 0b01000
>>> c = a|b
>>> c
25
>>> bin(c)
'0b11001'
>>> bin(a&b)
'0b1000'
>>> a = 3
>>> a<<1
6
>>> a<<3
24
  1. 加法操作
    (1)数字相加
    (2)字符串拼接
    (3)列表、元祖等合并
  2. 乘法操作
    (1)数字相乘
    (2)字符串复制
    (3)列表、元祖等复制

##复合赋值运算符
Python学习-Day3-运算符、序列

运算符优先级问题

从高到低
Python学习-Day3-运算符、序列

序列

序列是一种数据存储方式,用来存储一系列的数据。常用的序列结构有:字符串、列表、元组、字典、集合。

列表简介

列表:用于存储任意数目、任意类型的数据集合
Python学习-Day3-运算符、序列Python学习-Day3-运算符、序列
列表的大小可变。
字符串和列表都是序列类型,一个字符串是一个序列,一个列表是任何元素的序列。

列表的创建

基本语法[]创建

>>> a = [20,30,40,"Man"]
>>> a[0]
20
>>> a.append(20)
>>> a
[20, 30, 40, 'Man', 20]

list()创建

可以将任何可迭代的数据转化成列表。

>>> a = list("Man")
>>> a
['M', 'a', 'n']

range()创建整数列表

>>> a = range(10)
>>> list(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

推导式创建列表

>>> a = [x*2 for x in range(5)]
>>> a
[0, 2, 4, 6, 8]

列表元素的增加和删除

我们一般只在列表的尾部添加或删除元素,会提高列表操作效率。

append()方法

原地修改列表对象,速度最快。

>>> a = [20,40]
>>> a.append(100)
>>> a
[20, 40, 100]

+运算符操作

创建新的列表对象;将原列表的元素和新列表的元素依次复制到新的列表对象中。对于操作大量元素不建议使用。

>>> a = a+[50]
>>> a
[20, 40, 100, 50]

extend()方法

将目标列表的所有元素添加到本地列表的尾部,属于原地操作,不创建新的列表对象。

>>> a = [20,40]
>>> a.extend([50,60])
>>> a
[20, 40, 50, 60]

insert()插入元素

可以将指定的元素插入到列表对象的任意指定位置。涉及大量元素时,尽量避免使用。

>>> a = [20,40,50,60]
>>> a.insert(2,100)
>>> a
[20, 40, 100, 50, 60]

乘法扩展

生成一个新列表,新列表元素是原列表元素的多次重复。

>>> a
['man', 100]
>>> b
['man', 100, 'man', 100, 'man', 100]
>>>

列表元素的删除

del删除

删除列表指定位置的元素。

>>> A = [100,200,888,300,400]
>>> del A[2]
>>> A
[100, 200, 300, 400]

pop()方法

删除并返回指定位置元素。如果未指定位置则默认操作列表最后一个元素。

>>> A = [100,200,888,300,400]
>>> b = A.pop()
>>> b
400
>>> A
[100, 200, 888, 300]
>>> c = A.pop(1)
>>> c
200

remove()方法

删除首次出现的指定元素,若不存在该元素抛出异常。

>>> a = ["aa","bb","cc","bb"]
>>> a
['aa', 'bb', 'cc', 'bb']
>>> a.remove("bb")
>>> a
['aa', 'cc', 'bb']

列表元素访问和计数

通过索引直接访问元素

索引区间在[0,列表长度-1]这个范围。超过这个范围则会抛出异常。

>>> A = [100,200,888,300,200]
>>>> A[3]
300

index()

获得指定元素在列表中首次出现的索引。
语法:index(value,[start,[end]]),其中start和end指定了搜索的范围。

>>> A = [100,200,888,300,200]
>>> A.index(200)
1
>>> A.index(200,2)
4

count()

返回指定元素在列表中出现的次数

>>> A = [100,200,888,300,200]
>>>> A.count(200)
2

len()

返回列表长度,即列表中包含元素的个数。

>>> A = [100,200,888,300,400]
>>>> len(A)
5

成员资格判断

in关键字来判断,返回True或False

>>> A = [100,200,888,300,400]
>>> 100 in A
True
>>> 333 in A
False

列表切片操作

快速提取子列表或修改
[起始偏移量start:终止偏移量 end[:步长step]]
Python学习-Day3-运算符、序列
Python学习-Day3-运算符、序列
起始偏移量小于0会当做0,终止偏移量大于“长度-1”会被当成长度-1

>>> a = [10,20,30,40,50,60]
>>> a[1:3:1]
[20, 30]
>>> a[1::2]
[20, 40, 60]
>>> a[1:]
[20, 30, 40, 50, 60]
>>> a[:2]
[10, 20]
>>> a[-3:]
[40, 50, 60]
>>> a[-3:-2]
[40]
>>> a[::-1]
[60, 50, 40, 30, 20, 10]

列表的遍历

>>> for x in a:
...     print(x)
...
10
20
30
40
50
60

列表排序

修改原列表

不新建列表的排序
升序sort(),降序sort(reverse=True),打乱顺序import random
random.shuffle(a)

>>> a = [20,10,40,30]
>>> a.sort()
>>> a
[10, 20, 30, 40]
>>> a.sort(reverse=True)
>>> a
[40, 30, 20, 10]
>>> import random
>>> random.shuffle(a)
>>> a
[10, 30, 40, 20]
>>> random.shuffle(a)
>>> a
[20, 40, 30, 10]

建新列表的排序

sorted()进行排序,方法返回新列表,不对原列表做修改

>>> a = [20,10,40,30]
>>> a = sorted(a)
>>> a
[10, 20, 30, 40]

reversed()返回迭代器

进行逆序排列,不对原列表做修改,只是返回一个逆序排列的迭代器对象。

>>> a = [20,10,40,30]
>>> c = reversed(a)
>>> c
<list_reverseiterator object at 0x000001E904AE4488>
>>> list(c)
[30, 40, 10, 20]

列表相关的其他内置函数汇总

max和min

返回最大值和最小值

>>> a = [20,10,40,30]
>>> max(a)
40
>>> min(a)
10

sum

对数字型列表的所有元素进行求和操作,对非数值型列表运算则会报错。

>>> a = [20,10,40,30]
>>>> sum(a)
100

多维列表

二维列表

存储二维、表格的数据

>>> a = [["aa",1,2,"bb"],["cc",3,4,"dd"]]
>>> a
[['aa', 1, 2, 'bb'], ['cc', 3, 4, 'dd']]
>>> a[0]
['aa', 1, 2, 'bb']

元组 tuple

列表属于可变序列。元组属于不可变序列,不可修改元组中的元素。

元组的创建

  1. 通过()创建元祖。()可以省略。
>>> a= (10,20.30)
>>> type(a)
<class 'tuple'>
  1. 通过tuple()创建元组
>>> b = tuple("abcd")
>>> b
('a', 'b', 'c', 'd')
>>> b = tuple([2,3,4])
>>> b
(2, 3, 4)
>>> b = tuple(range(3))
>>> b
(0, 1, 2)

元组的元素访问和计数

  1. 元组的元素不能修改
>>> a= (10,20.30)
>>> a[1]=40
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
  1. 元组的元素访问
>>> a= (10,20,30)
>>> a[1:]
(20, 30)
  1. 元组的排序
>>> a= (20,10,30,5,7)
>>> sorted(a)
[5, 7, 10, 20, 30]

zip

将多个列表对应位置的元素组合成为元组,并返回这个zip对象

>>> a = [10,20,30]
>>> b = [40.50]
>>> c = [60,70]
>>> d = zip(a,b,c)
>>> list(d)
[(10, 40.5, 60)]
>>> d

生成器推导式创建元组

列表推导式直接生成列表对象,生成器推导式是一个生成器对象。

>>> s= (x*2 for x in range(5))
>>> tuple(s)
(0, 2, 4, 6, 8)
>>> s= (x*2 for x in range(5))
>>>> s.__next__()
0
>>> s.__next__()
2
>>> s.__next__()
4
>>> s.__next__()
6
>>> s.__next__()
8

元组总结

  1. 元组的核心特点是:不可变序列。
  2. 元组的访问和处理速度比列表快。
  3. 与整数和字符串一样,元组可以作为字典的键,列表则永远不能作为字典的键使用。

未经允许不得转载:作者:1026-徐同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《Python学习-Day3-运算符、序列》 发布于2020-04-08

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录