列表元组字符串有一些同样的特点,所以放在一起复习。例如切片操作
list
类似于一个毫无规定的数组,可以存放任意的东西。
mix = [1,2,"student",3.14,[3,4]]
列表里可以存放的数据有很多,数字,字符串,浮点数,甚至是另一个列表
列表添加数据:
添加单一元素使用的是append()
方法
如果想要添加几个元素可以使用extend()
方法,它的本质是使用另一个列表来扩充这个列表
如果想要插入数据的话可以使用insert
方法,它有两个参数,第一个是插入的位置(index)第二个是插入的元素
>>> number = [1,5,6,7]
>>> number.append(10)
>>> number
[1, 5, 6, 7, 10]
>>> number.extend([15,88])
>>> number
[1, 5, 6, 7, 10, 15, 88]
>>> number.insert(3,99)
>>> number
[1, 5, 6, 99, 7, 10, 15, 88]
>>>
有一些类似于C++中类方法的使用,他们都是对number这个列表进行操作
从列表获取元素:
类似于数组,我们是可以直接通过索引值去获取列表中的元素的
列表的索引值也是从0开始。
我们也可以通过len()
函数来获取列表的长度
>>> number
[1, 5, 6, 99, 7, 10, 15, 88]
>>> len(number)
8
>>> number[len(number)-1]
88
>>> number.extend([[8,8],[9,9]])
>>> len(number)
10
>>> number[-1]
[9, 9]
>>> number
[1, 5, 6, 99, 7, 10, 15, 88, [8, 8], [9, 9]]
同时我们也可以看出来,在列表的长度是每个元素加起来的数量,如果有列表元素,只当作为一个
还有我们可以使用负的索引值去寻找元素,列表的最后一个元素的索引值为-1,以此类推。
列表中更改元素:
如果想将列表中的两个值交换我们不需要像C++等一样引入第三变量而是可以使用python的a,b=b,a
这个语法进行交换
>>> a=3
>>> b=4
>>> a,b=b,a
>>> a
4
>>> b
3
>>> number
[1, 5, 6, 99, 7, 10, 15, 88, [8, 8], [9, 9]]
>>> number[1],number[9]=number[9],number[1]
>>> number
[1, [9, 9], 6, 99, 7, 10, 15, 88, [8, 8], 5]
这个语法看起来比较奇怪,资料显示:
x1,x2 = x2,x1的含义是: a = x2 b = x1 x1 = a x2 = b
大概的意思是引入了两个中间变量用于交换数值
从列表中删除数据:
从列表中删除数据我们一般使用三种方法:remove(),pop(),del
remove()
方法是指定一个元素删除,不需要知道位置,但是要知道具体的元素是什么,删除一个列表不存在的元素会报错
pop()
方法是删除指定位置的元素,可以不知道元素到底是什么,如果没有给出index参数默认会删除最后一个元素
del
方法不是一个列表方法,或者BIF,而是一个python语句有一些类似于C++中的清除内存的语句,我们使用del不但可以删除元素,也可以直接删除变量或者列表
>>> number
[1, [9, 9], 6, 99, 7, 10, 15, 88, [8, 8], 5]
>>> number.remove(1)
>>> number
[[9, 9], 6, 99, 7, 10, 15, 88, [8, 8], 5]
>>> number.pop(len(number)-2)
[8, 8]
>>> number
[[9, 9], 6, 99, 7, 10, 15, 88, 5]
>>> number.pop()
5
>>> number
[[9, 9], 6, 99, 7, 10, 15, 88]
>>> del number[3]
>>> number
[[9, 9], 6, 99, 10, 15, 88]
>>> del number
>>> number
Traceback (most recent call last):
File "" , line 1, in <module>
number
NameError: name 'number' is not defined
之所以报错就是是因为我们使用del
删除了number
列表,我们再去获取number
列表系统就会告诉我们这个变量并不存在
切片(slice)是python非常独特的一个属性,切片在本质上并不会修改我们所操作的列表本身,而是为这个列表创建了一个新的拷贝对象返回。
>>> number =[1,2,3,4,5,6,7,8,9,10]
>>> number[2:5]
[3, 4, 5]
>>> number[:2]
[1, 2]
>>> number[3:]
[4, 5, 6, 7, 8, 9, 10]
>>> number[:]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
除了以上的使用方法,我们的切片还可以接受第三个参数,代表的是步长
>>> number[1:9:2]
[2, 4, 6, 8]
>>> number[::2]
[1, 3, 5, 7, 9]
>>> number[::-1]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
>>> del number[::2]
>>> number
[2, 4, 6, 8, 10]
值得我们注意的是我们的步长可以设置为-1,-2等数字进行反向的元素提取。
在列表中我们之前学过的很多操作符都可以仍然使用
>>> list1 = [123]
>>> list2 = [234]
>>> list2 > list1
True
>>> list1 = [123,456]
>>> list2 = [234,123]
>>> list1 > list2
False
>>> list1 + list2
[123, 456, 234, 123]
>>> list3 = 3*(list1+list2)
>>> list3
[123, 456, 234, 123, 123, 456, 234, 123, 123, 456, 234, 123]
通过代码我们课可以分析得出,列表比较大小是只会比较第一个元素的,同时列表也可以使用+,*
等操作(有一些类似于C++的运算符重载)
>>> 123 in list3
True
>>> 777 in list3
False
>>> 123 not in list3
False
>>> 777 not in list3
True
>>> number = [1,2,[3,4]]
>>> 1 in number
True
>>> 3 in number
False
>>> [3,4] in number
True
>>>
还有我在python中学到的in,not in
的两个成员关系操作符,通过上面的代码我们可以看出,in和not in
两个算符只能判断一个层次的成员关系。如同break和continue
一样,只可以跳出一层的循环。
同时还有一些常用的列表方法:
count()
方法的作用是统计某一个元素出现的次数
index()
方法的作用是返回某一个元素第一次出现时的索引值,不设置起始结束参数的话默认搜索整个列表
reverse()
方法的作用是将整个列表反转
sort()
的作用是对列表的元素进行排序
>>> number
[1, 2, [3, 4], 12, 2, 1, 2, 3, 2, 1]
>>> number.count(1)
3
>>> number.index(2,0,5)
1
>>> number.reverse()
>>> number
[1, 2, 3, 2, 1, 2, 12, [3, 4], 2, 1]
>>> number.remove([3,4])
>>> number.sort()
>>> number
[1, 1, 1, 2, 2, 2, 2, 3, 12]
元组(tuple)跟列表是比较像的,他们之间最大的区别就是元组只可读不可写。也就是说元组不能进行增删改,只可以查。
除了这个特征以外,我们在创建元组的时候一般是使用小括号()
,而不是中括号[]
符号。
元组的建立:
>>> tuple1 = (1,2,3,4)
>>> tuple1
(1, 2, 3, 4)
>>> type(tuple1)
<class 'tuple'>
我们在查询元组的元素的时候还是要按照tuple1[a]
的方式来寻找,不要误写成tuple(1)
复制一个元组可以通过切片操作:tuple2 = tuple1[:]
或者tuple2 = tuple 1
。
如果你想更改数组,系统就会报错.
注意:
元组的标识符其实是,
也就是说我们可以不使用小括号也是可以创建元组的
tuple1 = 1,2,3,4
同样是成立的
更新和删除元组:
元组虽然不能被修改但是我们可以通过切片复制的操作创建一个新的同名元组,这样就可以更新元组了。
>>> number = 1,2,3,4,5,6
>>> number
(1, 2, 3, 4, 5, 6)
>>> number = (number[1],9)+number[2:]
>>> number
(2, 9, 3, 4, 5, 6)
>>> del number
上面的代码就是利用代码的相加创建了一个新的同名数组。同样的,del语句可以将元组删除。
字符串和元组一样都是只能够查不能修改的,如果非要修改,还是像上文一样使用切片等操作进行。同时那些字符串修改的参数都不是对原字符串的修改,而是返回一个字符串修改后的拷贝。
>>> str1 = "武汉理工大学理学院"
>>> str1.count('理')
2
>>> str1.find('理工')
2
>>> str1.replace("理学院","光信科")
'武汉理工大学光信科'
>>> str1.split()
['武汉理工大学理学院']
>>> str2 = "武汉","理工","大学"
>>> "-".join(str2)
'武汉-理工-大学'
>>> "".join(str2)
'武汉理工大学'
字符串可以进行一些格式化操作