python-运算符总结_列表_元组

1.运算符

基本运算符

运算符 说明
and,or,not 布尔与、布尔或、布尔非
is,is not 同一性判断,判断是否为同一一个对象
<,>,<=,>=,!=,== 比较值是否相当,可以连用
| ^ & 按位或,按位异或、按位与
<<,>> 移位
~ 按位翻转
+,-,*,/,//,% 加,减,乘,浮点除、整数除、取余
** 幂运算

复合赋值运算符

python-运算符总结_列表_元组

python不支持自增(++)和自减(--)

运算符优先级问题

python-运算符总结_列表_元组

实际使用中,记住如下简单的规则即可,复杂的表达式-定要使用小括号组织。

        1.乘除优先加减

        2.位运算和算术运算>比较运算符>赋值运算符

2.列表

列表简介

列表:用于存储任意数目、任意类型的数据集合。

列表是内置可变序列,是包含多个元素的有序连续的内存空间。列表定义的标准语法格式:

        a= [10,20,30,40]

其中, 10,20,30,40 这些称为:列表a的元素。

列表中的元素可以各不相同,可以是任意类型。比如:

a = [10,20,'abc',True]

列表对象常用方法汇总

方法 要点 描述
list.append(x) 增加元素 将元素x增加到列表list尾部
list.extend(aList) 增加元素 将列表alist所有元素加到列表list尾部
lit.insert(index,x) 增加元素 在列表list指定位置index处插入元素x
list.remove(x) 删除元素 在列表list中删除首次出现的指定元素x
list.pop([index]) 删除元素  删除并返回列表list 指定为止index处的元素, 默认是最后一个元素
list.clear0 删除所有元素 删除列表所有元素,并不是删除列表对象
list.index(x) 访问元素 返回第一一个 x的索引位置若不存在x元素抛出异常
list.count(x) 计数 返回指定元素X在列表list中出现的次数
len(list) 列表长度 返回列表中包含元素的个数
list.reverse() 翻转列表 所有元素原地翻转
list.sort( ) 排序. 所有元素原地排序
list.copy() 浅拷贝 返回列表对象的浅拷贝

Python的列表大小可变,根据需要随时增加或缩小。

字符串和列表都是序列类型, -个字符串是一个字符序列, -个列表是任何元素的序列。

列表的创建

1.基本语法[]创建

>>> a= [10,20,'zgy'python']

>>> a=0    #创建一一个空的列表对象

2.list()创建

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

>>> a= list() #创建- -个空的列表对象

>>> a = list(range(10))

>>> a

[0, 1,2,3,4,5, 6, 7,8, 9]

3.range()创建整数列表

range0可以帮助我们非常方便的创建整数列表,这在开发中及其有用。语法格式为:

range([start,] end [,step])

start参数:可选,表示起始数字。默认是0

end参数:必选,表示结尾数字。

step参数:可选,表示步长,默认为1

python3中range0返回的是一个range对象,而不是列表。我们需要通过list0方法将其转换成列表对象。

典型示例如下:

>>> list(range(3,15,2))

[3, 5, 7, 9, 11, 13]

列表元素的增加

        当列表增加和删除元素时,列表会自动进行内存管理,大大减少了程序员的负担.但这个特点涉及列表元素的大量移动,效率较低。除非必要,我们一般只在列表的尾部添加元素或删除元素,这会大大提高列表的操作效率。

append()方法

原地修改列表对象,是真正的列表尾部添加新的元素,速度最快,推荐使用。

>>> a = [20,40]

>>> a.append(80)

>>> a

[20, 40, 80]

+运算符操作

并不是真正的尾部添加元素,而是创建新的列表对象;将原列表的元素和新列表的元素依次复制到新的列表对象中。这样,会涉及大量的复制操作,对于操作大量元素不建议使用。

>>> a= [20,40]

>>> id(a)

46016072

>>> a= a+[50]

>>> id(a)

46015432

通过如.上测试,我们发现变量a的地址发生了变化。也就是创建了新的列表对象。

extend()方法

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

>>> a = [20,40]

>>> id(a)

46016072

>>> a.extend([50,60])

>>> id(a)

46016072

insert()插入元素

使用insert()方法可以将指定的元素插入到列表对象的任意制定位置。这样会让插入位置后面所有的元素进行移动,会影响处理速度。涉及大量元素时,尽量避免使用。类似发生这种移动的函数还有: remove0、pop0、del() , 它们在删除非尾部元素时也会发生操作位置后面元素的移动。

>>> a = [10,20,30]

>>> a.insert(2,100)

>>> a

[10, 20, 100, 30]

列表元素的删除

del删除

>>> a = [10,20,30]

>>> del a[1]

>>> a

[10, 30]

pop()方法

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

>>> a = [10,20,30,40,50]

 >>> a.pop()

 50

>>>a.pop(1)

20

remove()方法

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

>>> a= [10,20,30,40,50,20,30,20,30]

>>> a.remove(20)

>>> a

[10, 30, 40, 50, 20, 30, 20, 30]

列表元素访问和计数

通过索引直接访问元素

我们可以通过索引直接访问元素。索引的区间在(0,列表长度-1]这个范围。超过这个范围则会抛出异常。

>>> a = [10,20,30,40,50,20,30,20,30]

>>> a[2]

30

index()获得指定元素在列表中首次出现的索引

index(可以获取指定元素首次出现的索引位置。语法是:index(value,[start,[end]). 其中,start和end指定了搜索的范围。

>>> a = [10,20,30,40,50,20,30,20,30]

>>> a.index(20)

1

count()获得指定元素在列表中出现的次数

count(可以返回指定元素在列表中出现的次数。

>>> a = [10,20,30,40,50,20,30,20,30]

>>> a.count(20)

3

len()返回列表长度

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

>>> a = [10,20,30]

>>> len(a)

3

成员资格判断

判断列表中是否存在指定的元素,我们可以使用count()方法,返回0则表示不存在,返回大于0则表示存在。但是. -般我们会使用更加简洁的in关键字来判断,直接返回True或False.

>>> a = 1[10,20,30,40,50,20,30,20,30]

>>> 20in a

True

切片操作

字符串的切片操作,对于列表的切片操作和字符串类似。切片是Python序列及其重要的操作,适用于列表、元组、字符串等等。切片的格式如下:

切片slice操作可以让我们快速提取子列表或修改。标准格式为:

[起始偏移量start:终止偏移量end[:步长step]

注:当步长省略时顺便可以省略第二一个冒号

典型操作(三个量为正):

python-运算符总结_列表_元组

三个量为负的情况:

python-运算符总结_列表_元组

切片操作时,起始偏移量和终止偏移量不在[0,字符串长度1]这个范围,也不会报错。起始偏移量小于0则会当做0 ,终止偏移量大于“长度-1”会被当成-1.例如:

>>> [10,20,30,40][1:30]

[20, 30, 40]

列表排序

修改原列表,不建新列表的排序

>>> a = [20,10,30,40]
>>> id(a)
46017416
>>> a.sort()     #默认是升序排列
>>> a
[10, 20, 30, 40]
>>> a = [10,20,30,40]
>>> a.sort(reverse= True)    #降序排列
>>> a
[40, 30, 20, 10]
>> > import random
>>> random.shuffle(a)    #打乱顺序
>>> a
[20, 40, 30, 10]

 建新列表的排序

我们也可以通过内置函数sorted0进行排序,这个方法返回新列表,不对原列表做修改。

>>> a = [20,10,30,40]
>>> id(a)
46016008
>>> a = sorted(a)    #默认升序
>>> a
[10, 20, 30, 40]

reversed()返回迭代器

内置函数reversed(也支持进行逆序排列,与列表对象reverse0方法不同的是,内置函数 reversed0不对原列表做任何修改,只是返回一个逆序排列的迭代器对象。

>>> a = [20,10,30,40]
>>> C = reversed(a)
>>> C
<list _reverseiterator object at 0x0000000002BCCEB8>
>>> list(c)
[40, 30, 10, 20]
>>> list(c)
[]

打印输出C发现提示是: list_ _reverseiterator. 也就是一个迭代对象。 同时,使用list(C)进行输出,发现只能使用一-次。第一次输出了元素,第二次为空。那是因为迭代对象在第一次时已经遍历结束了, 第二次不能再使用。

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

max和min

用于返回列表中的最大值和最小值

>>> a = [3,10,20,15,9]

>>> max(a)

20

>>> min(a)

3

sum

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

>>> a = [3,10,20,15,9]

>>> sum(a)

57

多维列表

二维列表

一维列表可以帮助我们存储一 -维、 线性的数据。

二维列表可以帮助我们存储二维、表格的数据。

>>>a=[
        ["高小一",18,30000,"北京"],
        ["高小二",19,20000," .上海"],
        ["高小- -",20,10000,"深圳"], 
   ]
>>>a
>>>["高小一",18,30000,"北京"],["高小二",19,20000," .上海"],["高小- -",20,10000,"深圳"],
>>>a[0]
>>>["高小一",18,30000,"北京"]
>>>a[0][3]
>>>北京

3.元组tuple

列表属于可变序列,可以任意修改列表中的元素。元组属于不可变序列,不能修改元组中的元素。因此,元组没有增加元素、修改元素、删除元素相关的方法。因此,我们只需要学习元组的创建和删除,元组中元素的访问和计数即可。元组支持如下操作:

1.索引访问2.切片操作3.连接操作4.成员关系操作5.比较运算操作

6.计数:元组长度len0、最大值max(、最小值min0、求和sum()等。

元组的创建

1.通过0创建元组。小括号可以省略。

a = (10,20,30)或者a = 10,20,30

如果元组只有一个元素,则必须后面加逗号.这是因为解释器会把(1)解释为整数1 ,(1,)解释为元组。

>>> a= (1)
>>> type(a)
<class 'int'>
>>> a= (1,)    #或者a=1,
>>> type(a)
<class 'tuple'>

2.通过tuple0创建元组

tuple(可迭代的对象)

b = tuple()        #创建一一个空元组对象

b = tuple(" abc")

b = tuple(range(3))

b = tuple([2,3,4])

总结:

tuple(可以接收列表、字符串、其他序列类型、迭代器等生成元组。

list(可以接收元组、字符串、其他序列类型、迭代器等生成列表。

元组的元素和访问

1.元组的元素不能访问

2.元组的元素访问和列表-样,只不过返回的仍然是元组对象。

>>> a = (20,10,30,9,8)

>>> a[1]

10

3.列表关于排序的方法list.sorted)是修改原列表对象,元组没有该方法。如果要对元组排序,只能使用内置函数sorted(tupleObj) ,并生成新的列表对象。

>>> a = (20,10,30,9,8)

>>> sorted(a)

[8, 9, 10, 20, 30]

zip

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

生成器推导式创建元组

        从形式.上看,生成器推导式气列表推导式类似,只是生成器推导式使用小括号。列表推导式直接生成列表对象,生成器推导式生成的不是列表也不是元组,而是一个生成器对象。

        我们可以通过生成器对象,转化成列表或者元组。也可以使用生成器对象的_ next_ .0方法进行遍历,或者直接作为迭代器对象来使用。不管什么方式使用,元素访问结束后,如果需要重新访问其中的元素,必须重新创建该生成器对象。

生成器使用测试:

>>> s= (x*2 for x in range(5))
>>> s
<generator object < genexpr> at 0x0000000002BDEB48>
>>> tuple(s)
(0, 2,4, 6, 8)
>>> list(s)    #只能访问一次元素。第二次就为空了。需要再生成一次
[]

元组总结

        1.元组的核心特点是:不可变序列。

        2.元组的访问和处理速度比列表快。

        3.与整数和字符串一样,元组可以作为字典的键,列表则永远不能作为字典的键使用。

上一篇:《程序设计基础》 综合程序设计 7-1 自动售货机 (30 分)


下一篇:30条架构设计原则