python学习2020.9.14列表和元组

python学习

列表元素的增加

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

通过使用extend()方法:将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建新的列表
通过使用insert()方法可以将指定的元素插入到列表对象的任意指定位置
乘法扩展:使用乘法扩展列表,生成一个新列表,新列表元素时原列表元素的多次重复

下面是Demo

>>> a =[20,40]
>>> a.append(100)
>>> a
[20, 40, 100]
>>> a.append(200)
>>> a
[20, 40, 100, 200]
>>> id(a)
2170522783048
>>> a = a+[50]
>>> a
[20, 40, 100, 200, 50]
>>> id(a)
2170522783304
>>> a =[20,40]
>>> a.extend([100,200])
>>> a
[20, 40, 100, 200]
>>> id(a)
2170522790024
>>> a =[20,40]
>>> id(a)
2170522783048
>>> a.extend([100,200])
>>> a
[20, 40, 100, 200]
>>> id(a)
2170522783048
>>> a = [10,20,30]
>>> a.insert(2,100)
>>> a
[10, 20, 100, 30]
>>> 
列表元素的删除

通过使用del删除:删除列表指定位置的元素
通过使用pop()方法:pop()删除并返回指定位置元素,如果未指定位置则默认操作列表最后一个元素
通过使用remove()方法:删除首次出现的指定元素,若不存在改元素抛出异常。

下面是Demo

>>> a = [10,20,30]
>>> a.insert(2,100)
>>> a
[10, 20, 100, 30]
>>> b = [10,20,30]
>>> del a[1]
>>> del b[1]
>>> b
[10, 30]
>>> a = [10,20,34,40,50]
>>> b = a.pop()
>>> b
50
>>> a
[10, 20, 34, 40]
>>> b = a.pop(0)
>>> a
[20, 34, 40]
>>> c = [10,20,30,40,50,20,30,20,30]
>>> c.remove(20)
>>> c
[10, 30, 40, 50, 20, 30, 20, 30]
>>> a = ['a','b','c','d','gao']
>>> a.remove('gao')
>>> a
['a', 'b', 'c', 'd']
>>> 
列表元素的访问和计数

通过索引直接访问元素
通过索引直接访问
通过使用index()方法:可以直接获取指定元素首次出现的索引位置,其中start和end指定了搜素的范围
通过使用count()可以返回指定元素在列表中出现的次数
通过使用len()可以返回列表的长度
成员资格判断:判断列表中是否存在指定的元素,我们可以使用count()方法,返回0表示不存在,返回大于0则表示存在,但是,一般我们会使用更加简洁的in关键字来判断直接返回True或者False

下面是Demo

>>> a
['a', 'b', 'c', 'd']
>>> c.index(50)
3
>>> c.index(20,3)
4
>>> 20 in c
True
>>> len(c)
8
>>> count(20)
Traceback (most recent call last):
  File "<pyshell#43>", line 1, in <module>
    count(20)
NameError: name 'count' is not defined
>>> c.count(20)
2
>>> 
切片的操作

我们在前面学习字符串时,学习过字符串的切片操作,对于列表的切片操作和字符串类似,切片时python序列及重要的操作,适用于列表,元组,字符串等等。
切片时,起始偏移量和终止偏移量不在[0,字符串长度-1]这个范围,也不会报错,起始偏移量小于0则当作0,终止偏移量大于‘长度-1’会被都当成‘长度-1’

下面是Demo

>>> a = [10,20,30,40,50,60]
>>> a[:]
[10, 20, 30, 40, 50, 60]
>>> a[1:3:1]
[20, 30]
>>> a[1::2]
[20, 40, 60]
>>> a[::-1]
[60, 50, 40, 30, 20, 10]
>>> 
>>>> for x in a:
	print(x)

10
20
30
40
50
60
>>> 
列表排序

修改原列表,不建新列表的排序
a.sort()顺序排序
a.sort(reverse=True)反向排序
import random与random.shuffle(a)打乱排序
建新列表的排序:我们可以通过使用内置函数sorted()进行排序,这个方法返回新列表,不对原列表进行修改
reversed()方法不对原列表进行任何的更改,只是返回一个逆序排列的迭代器对象
max()和min()方法:放回一个最大和最小的值
sum()方法;对数值型列表的所有元素进行求和操作,对非数值型的则会报错

下面是Demo

>>> a[:]
[10, 20, 30, 40, 50, 60]
>>> a[1:3:1]
[20, 30]
>>> a[1::2]
[20, 40, 60]
>>> a[::-1]
[60, 50, 40, 30, 20, 10]
>>> for x in a:
	print(x)

10
20
30
40
50
60
>>> id(a)
2101144604040
>>> a.sort()
>>> a
[10, 20, 30, 40, 50, 60]
>>> id(a)
2101144604040
>>> a.sort(reverse=True)
>>> a
[60, 50, 40, 30, 20, 10]
>>> import random
>>> random.shuffle(a)
>>> a
[10, 20, 30, 60, 50, 40]
>>> random.shuffle(a)
>>> a
[30, 10, 40, 50, 60, 20]
>>> a = sorted(a)
>>> a
[10, 20, 30, 40, 50, 60]
>>> id(a)
2101144611016
>>> 
>>>> a[::-1]
[60, 50, 40, 30, 20, 10]
>>> c = reversed(a)
>>> c
<list_reverseiterator object at 0x000001E9365992C8>
>>> list(c)
[60, 50, 40, 30, 20, 10]
>>> list(a)
[10, 20, 30, 40, 50, 60]
>>> list(c)
[]
>>> 
>>>> max(a)
60
>>> min(a)
10
>>> sum(a)
210
>>> sum(c)
0
>>> 
多维列表

通过使用二维列表可以帮助我们存储二维,表格的数据
一维数组可以帮助我们存储一维,线性的数据。[10,20,30,40]

下面是Demo

a =[
	['高小一',18,30000,'北京'],
	['高小二',19,40000,'上海'],
	['高小五',20,50000,'深圳']
	]
print(a)
print(a[0])
for m in range(3):
    for n in range(4):
        print(a[m][n],end='\t')
    print()


元组tuple

列表属于可变序列,可以任意改变列表中的元素,元组属于不可变序列,不能修改元组中的元素。因此,元组没有增加元素,修改元素,删除元素的方法。
因此我们只要学习元组的创建和删除,元组中元素的访问和计数即可,元组支持如下操作:1.索引访问 2.切片操作 3.连接操作 4.成员关系操作 5.比较运算操作 6.计数:元组长度len(),最大值max(),最小值min(),求和sun()等。
元组的创建:tuple()可以接受列表,字符串,其他序列类型,迭代器等生成元组。list()可以接收元组,字符串,其他序列类型,迭代器等生成列表

下面是Demo

>>> a=10,20,30
>>> type(a)
<class 'tuple'>
>>> b = (50,)
>>> type(b)
<class 'tuple'>
>>> c = type()
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    c = type()
TypeError: type() takes 1 or 3 arguments
>>> c
Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    c
NameError: name 'c' is not defined
>>> b = tuple()
>>> b
()
>>> b=tuple('abcd')
>>> b
('a', 'b', 'c', 'd')
>>> b = tuple(range(5))
>>> b
(0, 1, 2, 3, 4)
>>> b = tuple([30,40,50])
>>> b
(30, 40, 50)
>>> 
元组的访问和计数

元组的访问和列表一样,只不过返回的仍然时元组
zip将多个列表对应位置的元素组合成元组,并返回这个ZIP对象

下面是Demo

>>> a = tuple('ansdjfnskkjdfjsndfknsdkfnsdfj')
>>> a
('a', 'n', 's', 'd', 'j', 'f', 'n', 's', 'k', 'k', 'j', 'd', 'f', 'j', 's', 'n', 'd', 'f', 'k', 'n', 's', 'd', 'k', 'f', 'n', 's', 'd', 'f', 'j')
>>> a[1:10]
('n', 's', 'd', 'j', 'f', 'n', 's', 'k', 'k')
>>> a[::-1]
('j', 'f', 'd', 's', 'n', 'f', 'k', 'd', 's', 'n', 'k', 'f', 'd', 'n', 's', 'j', 'f', 'd', 'j', 'k', 'k', 's', 'n', 'f', 'j', 'd', 's', 'n', 'a')
>>> b = (30,20,40)
>>> sorted(a)
['a', 'd', 'd', 'd', 'd', 'd', 'f', 'f', 'f', 'f', 'f', 'j', 'j', 'j', 'j', 'k', 'k', 'k', 'k', 'n', 'n', 'n', 'n', 'n', 's', 's', 's', 's', 's']
>>> sorted(b)
[20, 30, 40]
>>> a = 1,20
>>> b = 30,40
>>> a+b
(1, 20, 30, 40)
>>> a
(1, 20)
>>> len(a)
2
>>> sum(a)
21
>>> sum(b)
70
>>> max(b)
40
>>> min(a)
1
>>> a = [10,20,30]
>>> b = [40,50,60]
>>> c = [70,80,90]
>>> d = zip(a,b,c)
>>> d
<zip object at 0x00000198FF6C4D08>
>>> list(d)
[(10, 40, 70), (20, 50, 80), (30, 60, 90)]
>>> 
>>> 
生成器推导式创建元组

通过使用生成器生成的不是列表也不是元组,而是一个生成器对象

下面是Demo

>>> s = (x*2 for x in range(5))
>>> s
<generator object <genexpr> at 0x0000017869528A48>
>>> tuple(s)
(0, 2, 4, 6, 8)
>>> tuple(s)
()
>>> s
<generator object <genexpr> at 0x000001786957EE48>
>>> s.__next__()
0
>>> s.__next__()
2
>>> s.__next__()
4
>>> s.__next__()
6
>>> s.__next__()
8
>>> s.__next__()
Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    s.__next__()
StopIteration
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值