列表与元组

列表有些类似与数组
列表个元素通过逗号隔开,写在方块中

>>> a=["一",1]
>>> b=["二",2]
>>> ab=[a,b]
>>> ab
[['一', 1], ['二', 2]]

索引:元素位置

编号从零开始

>>> area='area'
>>> area[0]
'a'

从后往前索引用负数,最后一个元素位置是-1,不是-0,否则会和第一个元素重合

>>> area[-2]
'e'

字符串也可以直接索引

>>> 'string'[1]
't'

如果函数调用返回一个序列,那么可以直接对返回结果进行索引操作。如下

>>> second=input("area: ")[1]
area: fresh
>>> second
'r'

分片

利用分片操作访问一定范围内的元素
第一个边界不包含在访问的元素范围内,元素范围长度等于两个边界之差

>>> nature=["蓝天","白云","绿树","青草","清澈的小河"]
>>> nature[0:3]
['蓝天', '白云', '绿树']
>>> nature[1:3]
['白云', '绿树']
>>> nature[3:]
['青草', '清澈的小河']
>>> nature[:3]
['蓝天', '白云', '绿树']
>>> nature[-2:]
['青草', '清澈的小河']

如果需要复制整个序列,可以将两个索引都置空

>>> nature[:]
['蓝天', '白云', '绿树', '青草', '清澈的小河']

步长:步长为n的分片包括的是从开始到结束每隔n-1个的元素

>>> number=[1,2,3,4,5,6,7,8,9,10]
>>> number[0:10:3]
[1, 4, 7, 10]
>>> number[::3]
[1, 4, 7, 10]

如果步长是负数则分片从右向左提取元素

>>> number[::-2]
[10, 8, 6, 4, 2]
>>> number[3::-3]
[4, 1]
>>> number[:3:-3]
[10, 7]

序列相加:通过是用运算符进行序列的连接操作,列表和字符串不能连接在一起,可以将字符串放在列表里。

>>> [1,3,5]+['hello']
[1, 3, 5, 'hello']
>>> [1,3,5]+'hello'
Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    [1,3,5]+'hello'
TypeError: can only concatenate list (not "str") to list

列表可以相加,也可以相乘

>>> [1,2]*3
[1, 2, 1, 2, 1, 2]

None空列表初始化
None是python的内建值,它的确切含意是“这里什么都没有”

>>> sequence=[None]*10
>>> sequence
[None, None, None, None, None, None, None, None, None, None]

成员资格
使用in运算符检查某个值是否在序列中

>>> space=['s','p','a','c','e']
>>> 'a'in space
True
>>> 'b' in space
False

内建函数len、min、max
len函数返回序列中所包含的元素数量,min函数和max函数返回序列中最小和最大的元素

>>> number=[1,3,5]
>>> len(number)
3
>>> min(number)
1
>>> max(number)
5
>>> max(2,6,1)
6

list函数

list函数适合所有序列,比如根据字符串创建列表,这样字符串就能像列表一样被修改了

>>> list('hello')
['h', 'e', 'l', 'l', 'o']

基本的列表操作

1.改变列表,元素赋值

>>> a=[1,2,3]
>>> a[2]=0
>>> a
[1, 2, 0]

2.删除元素

>>> nature=["蓝天","白云","绿树","青草","清澈的小河"]
>>> del nature[0]
>>> nature
['白云', '绿树', '青草', '清澈的小河']

3.分片赋值

>>> name = list('Kora')
>>> name
['K', 'o', 'r', 'a']
>>> name[1:]=list('erry')
>>> name
['K', 'e', 'r', 'r', 'y']

分片赋值语句也可以插入新的元素

>>> num=[1,5]
>>> num[1:1]=[2,3,4]
>>> num
[1, 2, 3, 4, 5]

插入新的元素只是“替换”了一个空的分片,也可以通过分片删除元素

>>> num=[1,2,3,4,5]
>>> num[1:4]=[]
>>> num
[1, 5]

列表方法

方法调用:对象.方法(参数)
1.append方法用于在列表末尾追加新的对象,只能添加一个新对象

>>> num=[1,2,3]
>>> num.append(4,5)
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    num.append(4,5)
TypeError: append() takes exactly one argument (2 given)
>>> num.append(4)
>>> num
[1, 2, 3, 4]

2.extend
extend方法可以在列表的末尾一次性追加另一序列中的多个值

>>> a=[1,2,3]
>>> b=[4,5,6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]

连接的操作会比extend方法效率低

>>> a=[1,2,3]
>>> b=[4,5,6]
>>> a=a+b
>>> a
[1, 2, 3, 4, 5, 6]

分片赋值也可以实现,但可读性不如extend方法

>>> a=[1,2,3]
>>> b=[4,5,6]
>>> a[len(a):]=b
>>> a
[1, 2, 3, 4, 5, 6]

3.insert
insert方法用于将对象插入到列表中

>>> num=[1,2,3,4,5,7]
>>> num.insert(5,'six')
>>> num
[1, 2, 3, 4, 5, 'six', 7]

分片赋值可以实现,可读性不如insert

>>> num=[1,2,3,4,5,7]
>>> num[5:5]=['six']
>>> num
[1, 2, 3, 4, 5, 'six', 7]

4.count
count方法用于统计某个元素在列表中出现的次数

>>> num=[1,2,3,1]
>>> num.count(1)
2

5.index
index方法用于从列表中找出某个值第一个匹配项的索引位置

>>> nature=["蓝天","白云","绿树","青草","清澈的小河"]
>>> nature.index('蓝天')
0
>>> nature[0]
'蓝天

6.pop
pop方法会移除列表中一个元素(默认是最后一个),并且返回该元素的值

>>> num=[1,2,3]
>>> num.pop(2)
3
>>> num
[1, 2]

python没有入栈方法,但可以用append代替,出栈用pop.如果入栈刚刚出栈的值,最后得到的结果还是原来的栈

>>> num=[1,2,3]
>>> num.append(num.pop())
>>> num
[1, 2, 3]

7.remove
remove方法用于移除列表中某个值的第一个匹配项:

>>> nature=["蓝天","白云","绿树","青草","清澈的小河"]
>>> nature.remove('白云')
>>> nature
['蓝天', '绿树', '青草', '清澈的小河']

8.reverse
reverse方法将列表中的元素反向存放

>>> nature=["蓝天","白云","绿树","青草","清澈的小河"]
>>> nature.reverse()
>>> nature
['清澈的小河', '青草', '绿树', '白云', '蓝天']

9.sort
sort方法用于原位置在原位置对列表进行排序

>>> a=[10,9,8,7,6,5,4,3,2,1]
>>> a.sort()
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

前面说的分片复制a[:],有人会有疑惑,用b=a不行吗?那我们来试一试

>>> a=[10,9,8,7,6,5,4,3,2,1]
>>> b=a
>>> c=a[:]
>>> a.sort()
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> b
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> c
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

不行,b=a只是对a列表多了一个标签,a和b这两个名字都指向同一个列表,c=a[:]才是真正的复制

另一种获取已排序的列表副本的方法是,使用sorted函数

>>> a=[3,5,1,7,4,0,2]
>>> b=sorted(a)
>>> a
[3, 5, 1, 7, 4, 0, 2]
>>> b
[0, 1, 2, 3, 4, 5, 7]

这个函数实际上可以用于任何序列,却总是返回一个列表

>>> sorted('python')
['h', 'n', 'o', 'p', 't', 'y']

想要从大到小排序,可以先用sort,再用reverse方法

>>> a=[3,5,1,7,4,0,2]
>>> a.sort()
>>> a
[0, 1, 2, 3, 4, 5, 7]
>>> a.reverse()
>>> a
[7, 5, 4, 3, 2, 1, 0]

元组

元组与列表一样,也是一种序列,唯一不同的是元组不能修改
创建元组:必须用逗号隔开

>>> 1,2,3
(1, 2, 3)
>>> (1,2,3)
(1, 2, 3)
>>> ()#空元组
()
>>> 1,
(1,)
>>> 2#不是元组,逗号很重要
2
>>> 3*(2+1,)
(3, 3, 3)

tuple函数

tuple函数与list基本一样,tuple函数是以一个序列作为参数并把它换为元组,如果参数是元组,就会被原样返回

>>> tuple('hello')
('h', 'e', 'l', 'l', 'o')
>>> tuple((1,2,3))
(1, 2, 3)

基本元组操作

与列表一样

>>> x=1,2,3
>>> x[2]
3
>>> x[1:2]
(2,)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值