python的列表和元祖详解(二)

简介: python的列表和元祖详解(二)

python的列表和元祖详解(一):https://developer.aliyun.com/article/1495611

3.修改

前提是该索引处有数据

1.service[0] = ‘mysql’ ##通过索引 重新赋值,就是修改

2.service[:2] = [‘samba’,‘iscsi’] ##通过切片给前两个元素重新赋值

4.查看:

查看出现的次数

service.count('ssh')

修改多个值,如果使用切片进行修改,要求数据必须是Iterable可迭代性数据

带有步长的方式修改,相当于把相关下表位置的值给一次性改了,但要修改的字段要与步长选出的数据个数一致

5.排序

sort 排序 默认升序 没有返回值

对字符串排序不区分大小写

names = ['alice','Bob','coco','Harry']
names.sort()

names ###按照ASCLL排序 ###先排序首字母为大写的,再排序首字母是小写的

字符串排序,遵从ASCII码 从第一个字母开始,第一个相同按第二个,以此类推

name.sort(key=None, reverse=True(降序)  reverse=False(升序 默认))

names.sort(key=str.lower)   ###对字符串排序不区分大小写,相当于将所有元素转换为小写,再排序
names.sort(key=str.upper)   ###相当于将所有元素转换为大写,再排序

name_list.sort(reverse=True)
print(name_list)

name_list.sort(reverse=False)

print(name_list)

str1 = [1, 2, 3, 5, 6, 33, 65, 22, 11]
str1.sort()
print(str1)
[1, 2, 3, 5, 6, 11, 22, 33, 65]

str1.sort(reverse=True) 降序排序

简单的升序排序是非常容易的。只需要调用sorted()方法。

它返回一个新的list,新的list的元素基于小于运算符(lt)来排序。

复制代码代码如下:

>>> sorted([5, 2, 3, 1, 4])
[1, 2, 3, 4, 5]

你也可以使用list.sort()方法来排序,此时list本身将被修改。

通常此方法不如sorted()方便,但是如果你不需要保留原来的list,sort方法将更有效。

另一个不同就是list.sort()方法仅被定义在list中,相反地sorted()方法对所有的可迭代序列都有效,返回一个排序后的列表

我们需要对List进行排序,Python提供了两个方法

对给定的List L进行排序,

方法1.用List的成员函数sort进行排序

方法2.用内建函数sorted进行排序(从python 2.4开始)

sort函数定义:sort(cmp=None, key=None, reverse=False)

sorted函数定义:sorted(iterable, cmp=None, key=None, reverse=False)

参数解析:

iterable:是可迭代类型;

cmp:用于比较的函数(大于时返回1,小于时返回-1,等于时返回0),

比较什么由key决定,有默认值,迭代集合中的一项;

key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项;

reverse:排序规则. reverse = True 或者 reverse = False,有默认值。

注:sort( )函数与sorted( )函数最大的区别是, sort( )函数时对已存在的列表进行操作,

调用其没有返回值;而sorted( )函数是返回一个新的list,不在原来的list上进行操作,

调用其返回一个排好序的list。

示例1:

list1 = [9, 1, 3, 45, 54]

list2 = sorted(list1)

print(list2)


[1, 3, 9, 45, 54]

#是否可以对中文排序(了解 无规律可循)

lst = ["王文","蔡徐坤"]
lst.sort()
print(lst)

中文可以排序,根据相应字符集,来排序

5列表元素查找

index()返回指定数据所在位置的下标,如果有相同元素,返回第一次元素出现的下标

语法:

语法:

列表序列.index(数据, 开始位置下标,结束位置下标)

开始位置和结束位置不写表示全局查找

list1 = ['天河', '越秀', '荔湾']

print(list1.index("荔湾", 0, 3))

输出2

如果查找的数据不存在就报错,后面可以通过try except 来抑制这个报错

元祖元素查找同理

鼠标放在方法上,按住ctrl 键,可以点进去查看系统方法的具体使用方法

len(),返回列表长度,即列表中数据的个数

print(list1.__len__())
print(len(list1))

3
3

count()返回列表中数据出现次数

数据不存在返回0,列表中的count不能指定查找范围

判断某个数据是否存在于列表中

in: 存在返回True,不存在返回False not in与之相反

print("天河" in list1)

修改列表:

直接将指定下标的值重新赋值:

name_list[0] = "景浩"
print(name_list)
['景浩', '李四', '王五']

reverse() 逆置列表,将列表中的数据顺序颠倒, 返回空,执行后,直接把原列表反转了。与切片逆序功能类似

name_list.reverse()
print(name_list)
['王五', '李四', '张三']

列表复制:

name_list2 = name_list.copy()
print(name_list2)

name_list = ['张三', '李四', '景浩', '王五']


列表遍历while循环:
i = 0
while i < len(name_list):
    print(name_list[i])
    i += 1

张三
李四
景浩
王五

列表遍历for循环:

for i in name_list:
    print(i)

张三
李四
景浩
王五

for循环比较简洁

列表嵌套:

大列表里面包含小列表,小列表称为子列表

name_list3 = ['张三', ['黄丹', '刘飞'], '李四', '景浩', '王五']

print(name_list3[1][1])

刘飞

for i in name_list3:
    print(i)

张三

[‘黄丹’, ‘刘飞’]

李四

景浩

王五

随机分配办公室:

import random

teachers = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
offices = [[], [], []]

for name in teachers:
    num = random.randint(0, 2)
    offices[num].append(name)

print(offices)

i = 1
for office in offices:
    print(f'办公室{i}的人数是{len(office)},老师的名字是:')
    for name in office:
        print(name)
    i += 1

元祖

一个元祖可以存多个数据,元祖内的数据不可以修改

t1 = (‘景浩’, ‘耀东’, ‘梅江’)

#注意点

“”“逗号才是区分是否是元组的标识符”“”

元祖内如果只有一个数据,后面也要加逗号,否则数据类型为该数据的数据类型

t2 = (3)
print(type(t2))

<class 'int'>
t2 = (3,)
print(type(t2))

<class 'tuple'>

1 定义空元祖

2 元祖不支持修改,只支持查找操作

按下标查找

print(t1[0])

index:

返回下标,不存在的话就报错

print(t1.index(‘耀东’))

1

count:

统计某个数据出现的次数

len:

统计元祖中的元素个数

强行修改元祖,会出现报错

t1[2] = ‘王五’

TypeError: ‘tuple’ object does not support item assignment

3 创建一个新的元组

tup3 = tup1 + tup2;

print tup3;

#以上实例输出结果:

#(12, 34.56, ‘abc’, ‘xyz’)

4 删除元组

元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组

tup = (‘physics’, ‘chemistry’, 1997, 2000);

del tup;

如果元祖里面有列表元素,则可以修改列表那一项的数据。即元祖中的元素有可变类型,则可以修改该元素中的值

t1 = (‘景浩’, ‘耀东’, ‘梅江’, [1, 2, 3])

t1[3][1] = ‘王五’

print(t1)

(‘景浩’, ‘耀东’, ‘梅江’, [1, ‘王五’, 3])

工作中有不能修改的数据,定义成元祖

修改元祖中可变类型字典中的元素值


相关文章
|
1天前
|
Python
【Python操作基础】——列表操作
【Python操作基础】——列表操作
|
1天前
|
索引 Python
Python中的列表、元组和字典各具特色
Python中的列表、元组和字典各具特色:列表是可变的,元组不可变,字典亦可变;列表和元组有序,字典无序(但在Python 3.7+保持插入顺序);元素类型上,列表和元组元素任意,字典需键不可变;列表用方括号[],元组用圆括号(),字典用大括号{}表示。列表不适合作字典键,元组可以。选择数据结构应依据实际需求。
7 2
|
5天前
|
BI Python
深入浅出:讲解Python中的列表推导式
深入浅出:讲解Python中的列表推导式
|
5天前
|
监控 PHP Python
1688快速获取整店铺列表 采集接口php Python
在电子商务的浪潮中,1688平台作为中国领先的批发交易平台,为广大商家提供了一个展示和销售商品的广阔舞台;然而,要在众多店铺中脱颖而出,快速获取商品列表并进行有效营销是关键。
|
5天前
|
算法 Python
Python中不使用sort对列表排序的技术
Python中不使用sort对列表排序的技术
17 1
|
5天前
|
Python
【Python 基础】列表(list)和元组(tuple)有什么区别?
【5月更文挑战第6天】【Python 基础】列表(list)和元组(tuple)有什么区别?
|
5天前
|
算法 Python
从原始边列表到邻接矩阵:使用Python构建图的表示
从原始边列表到邻接矩阵:使用Python构建图的表示
9 0
|
5天前
|
机器学习/深度学习 存储 数据挖掘
Python中遍历并修改列表的综合指南
Python中遍历并修改列表的综合指南
15 2
|
6天前
|
机器学习/深度学习 自然语言处理 Python
python分词列表转化成词向量
python分词列表转化成词向量
12 1
|
6天前
|
算法 数据处理 Python
Python技术分享:如何将数据列表中的空值补0
Python技术分享:如何将数据列表中的空值补0
14 1