序列(列表、元组)

序列:字符串、列表、元组、字典、集合

目录

序列:字符串、列表、元组、字典、集合

 

一.列表

1.列表简介

2.列表的创建

3.推导式生成列表

4.列表元素的增加

5.列表元素的删除

6.列表元素访问和计数

7.列表的遍历

8.列表排序

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

10.多维列表

二.元组

1.元组的创建

2.元组的元素访问和计数

3.zip

4.生成器推导式创建元组

 


一.列表

1.列表简介

用于存储任意数目、任意类型的数据集合。列表中的元素可以各不相同,可以是任意类型。Python 的列表大小可变,根据需要随时增加或缩小。

2.列表的创建

  • 基本语法[ ]创建,中间的每个对象都要用逗号隔开
 a=[1,2,3,"lhx"]
>>> a=
SyntaxError: invalid syntax
>>> a
[1, 2, 3, 'lhx']
  • list()创建:使用 list()可以将任何可迭代的数据转化成列表。
 a
[1, 2, 3, 'lhx']
>>> a=list()
>>> a
[]
>>> a=list(range(10))
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b="林海馨真好看"
>>> c=list(b)
>>> c
['林', '海', '馨', '真', '好', '看']
>>> d=list("林海馨太好看了吧!")
>>> d
['林', '海', '馨', '太', '好', '看', '了', '吧', '!']
  • range()创建整数列表:range()可以帮助我们非常方便的创建整数列表,这在开发中及其有用。range([start,] end [,step])

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

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

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

range()生成的是range对象,需要用list()将其转化成列表

 a=list(range(30,10,-2))
>>> a
[30, 28, 26, 24, 22, 20, 18, 16, 14, 12]
>>> 

3.推导式生成列表

简单介绍一下,在控制语句处将详细解视。使用推导式产生列表非常方便。

>>> a=(x*3 for x in range(100) if x%5==0)
>>> a
<generator object <genexpr> at 0x03A536F0>
>>> list(a)
[0, 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, 270, 285]
>>> 

4.列表元素的增加

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

  • append()方法:原地修改列表对象,是真正的列表尾部添加新的元素,速度最快,推荐使用

增加方法需要在列表中使用时,直接通过列表对象调用即可。前字符串也相同。

a=[10,20,50,78]
>>> a.append("林海馨真好看呀!")
>>> a
[10, 20, 50, 78, '林海馨真好看呀!']
>>> 
  • +运算符操作:并不是真正的尾部添加元素,而是创建新的列表对象;将原列表的元素和新列表的元素依次 复制到新的列表对象中。这样,会涉及大量的复制操作,对于操作大量元素不建议使用。

直接使用加号使得需要添加的对象加入即可。

>>> b=["林海馨太好看了!"]
>>> id(b)
54954152
>>> b=b+["那是肯定的!"]
>>> b
['林海馨太好看了!', '那是肯定的!']
>>> id(b)
61148392

 

  • extend()方法:将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建新的列表对象。
d=[40,50]
>>> id(d)
56977384
>>> d=d.extend(60,70)
Traceback (most recent call last):
  File "<pyshell#51>", line 1, in <module>
    d=d.extend(60,70)
TypeError: extend() takes exactly one argument (2 given)
>>> d=d.extend([60,70])
>>> id(d)
1561939176
  • insert()插入元素:使用 insert()方法可以将指定的元素插入到列表对象的任意制定位置。这样会让插入位置后 面所有的元素进行移动,会影响处理速度。
>>> b=["林海馨真好看","说的对","!","!","!","!"]
>>> b.insert(2,"嗯嗯!")
>>> b
['林海馨真好看', '说的对', '嗯嗯!', '!', '!', '!', '!']
>>> 
  • 乘法扩展

和字符串中*的使用方法一致。适用于乘法的还有字符串和元组。

>>> a=["林海馨真好看!","说的对!"]
>>> b=a*3
>>> b
['林海馨真好看!', '说的对!', '林海馨真好看!', '说的对!', '林海馨真好看!', '说的对!']
>>> 

5.列表元素的删除

  • del 删除:删除列表指定位置的元素

此方法不能使用列表进行调用,直接使用该方法即可

>>> b.del[4]
SyntaxError: invalid syntax
>>> del b[4]
>>> b
['林海馨真好看!', '说的对!', '林海馨真好看!', '说的对!', '说的对!']
>>> 
  • pop()方法

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

>>> a=["林海馨真好看","说的对","!","!","!","!"]
>>> a.pop(1)
'说的对'
>>> a
['林海馨真好看', '!', '!', '!', '!']
>>> 
  • remove()方法

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

>>> a=["林海馨真好看","说的对","!","!","!","!"]
>>> b=a*3
>>> b
['林海馨真好看', '说的对', '!', '!', '!', '!', '林海馨真好看', '说的对', '!', '!', '!', '!', '林海馨真好看', '说的对', '!', '!', '!', '!']
>>> b.remove("说的对")
>>> b
['林海馨真好看', '!', '!', '!', '!', '林海馨真好看', '说的对', '!', '!', '!', '!', '林海馨真好看', '说的对', '!', '!', '!', '!']
>>> b.remove("说的对!")
Traceback (most recent call last):
  File "<pyshell#17>", line 1, in <module>
    b.remove("说的对!")
ValueError: list.remove(x): x not in list
>>> 

6.列表元素访问和计数

  • 通过索引直接访问元素

可以通过索引直接访问列表,若超过范围则报错

>>> b[1]
'!'
>>> b[0]
'林海馨真好看'
>>> b[6]
'说的对'
>>> 
  • index()获得指定元素在列表中首次出现的索引

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

a=["林海馨真好看","说的对","!","!","!","!"]
>>> b=a*4
>>> b
['林海馨真好看', '说的对', '!', '!', '!', '!', '林海馨真好看', '说的对', '!', '!', '!', '!', '林海馨真好看', '说的对', '!', '!', '!', '!', '林海馨真好看', '说的对', '!', '!', '!', '!']
>>> b.index("林海馨真好看",[7,24])
Traceback (most recent call last):
  File "<pyshell#23>", line 1, in <module>
    b.index("林海馨真好看",[7,24])
TypeError: slice indices must be integers or have an __index__ method
>>> b.index("林海馨真好看",7,24)
12
>>> 

 

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

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

>>> b.count("!")
16
>>> b
['林海馨真好看', '说的对', '!', '!', '!', '!', '林海馨真好看', '说的对', '!', '!', '!', '!', '林海馨真好看', '说的对', '!', '!', '!', '!', '林海馨真好看', '说的对', '!', '!', '!', '!']
  • len()返回列表长度

>>> b
['林海馨真好看', '说的对', '!', '!', '!', '!', '林海馨真好看', '说的对', '!', '!', '!', '!', '林海馨真好看', '说的对', '!', '!', '!', '!', '林海馨真好看', '说的对', '!', '!', '!', '!']
>>> len(b)
24
  • 成员资格判断

" "in[ ]


>>> b
['林海馨真好看', '说的对', '!', '!', '!', '!', '林海馨真好看', '说的对', '!', '!', '!', '!', '林海馨真好看', '说的对', '!', '!', '!', '!', '林海馨真好看', '说的对', '!', '!', '!', '!']
>>> len(b)
24
>>> "林海馨真好看" in b
True
  • 切片操作:适用于列表、元组、字符串

和字符串的切片操作相同,可以快速提取子列表。标准格式为: [起始偏移量 start:终止偏移量 end[:步长 step]]。

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

b["林海馨真好看","说的对","!","!","!","!"]
b=b*4
>>> b[:]
['林海馨真好看', '说的对', '!', '!', '!', '!', '林海馨真好看', '说的对', '!', '!', '!', '!', '林海馨真好看', '说的对', '!', '!', '!', '!', '林海馨真好看', '说的对', '!', '!', '!', '!']
>>> b[3:23:-1]
[]
>>> b[3:23:2]
['!', '!', '说的对', '!', '!', '说的对', '!', '!', '说的对', '!']
>>> b[::-1]
['!', '!', '!', '!', '说的对', '林海馨真好看', '!', '!', '!', '!', '说的对', '林海馨真好看', '!', '!', '!', '!', '说的对', '林海馨真好看', '!', '!', '!', '!', '说的对', '林海馨真好看']
>>> b[-3:]
['!', '!', '!']
>>> b[-5:-3]
['说的对', '!']
>>> 

7.列表的遍历

后续补充

8.列表排序

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

注意:True的T一定要进行大写,否则不能显示

a=[10,20,30,75,89,56,110,12,33]
>>> id(a)
57934600
>>> a.soet()
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    a.soet()
AttributeError: 'list' object has no attribute 'soet'
>>> a.sort()
>>> a
[10, 12, 20, 30, 33, 56, 75, 89, 110]
>>> id(a)
57934600
>>> a.sort(reverse=true)
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    a.sort(reverse=true)
NameError: name 'true' is not defined
>>> a.sort(reverse=True)
>>> a
[110, 89, 75, 56, 33, 30, 20, 12, 10]
>>> id(a)
57934600
>>> 
  • 建新列表的排序

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

>>> a=sorted(a)
>>> a
[10, 12, 20, 30, 33, 56, 75, 89, 110]
>>> id(a)
11463752
>>> b=sorted(a,reverse=True)
>>> b
[110, 89, 75, 56, 33, 30, 20, 12, 10]
>>> id(b)
11464168
>>> 
  • reversed()返回迭代器

内置函数 reversed()也支持进行逆序排列,但是返回的是迭代器对象。

 c=reversed(a)
>>> c
<list_reverseiterator object at 0x00AD8700>
>>> list(c)
[110, 89, 75, 56, 33, 30, 20, 12, 10]
>>> list[c]
Traceback (most recent call last):
  File "<pyshell#22>", line 1, in <module>
    list[c]
TypeError: 'type' object is not subscriptable
>>> list(c)
[]

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

  • max 和 min
  • sum
b=[10,20,30,75,89,56,110,12,33]
>>> max(b)
110
>>> min(b)
10
>>> sum(b)
435

10.多维列表

二维列表可以用来存储表格

a=[
	["林海馨","女","18","研一"],
	["任国亮","男","20","研一"],
	["张倩","女","18","研一"]
	]
>>> a
[['林海馨', '女', '18', '研一'], ['任国亮', '男', '20', '研一'], ['张倩', '女', '18', '研一']]
>>> a[0][1]
'女'
for m in range(3):
	for n in range(4):
		print(a[m][n],end="\t")
	print()

	
林海馨	女	18	研一	
任国亮	男	20	研一	
张倩	女	18	研一

 

二.元组

1.元组的创建

列表属于可变序列,可以任意修改列表中的元素。元组属于不可变序列,不能修改元组中的 元素。因此,元组没有增加元素、修改元素、删除元素相关的方法。

  • 通过()创建元组 

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

>>> a=(1)
>>> type(a)
<class 'int'>
>>> a=(1,)
>>> type(a)
<class 'tuple'>
  • 通过 tuple()创建元组
>>> b=tuple()
>>> b=tuple("abc")
>>> type(b)
<class 'tuple'>
>>> tuple(range(10))
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
>>> b=tuple(["林海馨"])
>>> b
('林海馨',)
>>> 

 

2.元组的元素访问和计数

元组的元素访问和列表一致,可以使用slice切片的方法

>>> a=(10,50,648,789,12,55,77,64,72,112)
>>> a[1]
50
>>> a[1:6]
(50, 648, 789, 12, 55)
>>> sorted(a)
[10, 12, 50, 55, 64, 72, 77, 112, 648, 789]

3.zip

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

 a=("林")
>>> b=("海")
>>> c=("馨")
>>> d=zip(a,b,c)
>>> type(d)
<class 'zip'>
>>> list(d)
[('林', '海', '馨')]
>>> 

4.生成器推导式创建元组

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值