python——数据类型(三)

一、列表

列表是python中重要的序列类型。

[数据1,数据2,...,数据n]

我们通过一对中括号[] ,将数据囊括起来,其基本操作依旧是增、删、改、查。

1.1 增加

1.1.1 append()

作用:添加一个数据,添加到列表的最后一位。

语法:

列表名.append(数据)

接下来,我们尝试一下append的使用方法:

li = [1,2,3,4,5]
# 用append方法往列表中追加元素
li.append('小樱')
print(li)  # [1, 2, 3, 4, 5, '小樱']

# 如果追加两个元素会如何?  -- 会报错
li = [1,2,3,4,5]
li.append('鸣人','佐助')
print(li)  # 程序报错

# 但是可以追加一个列表,记住这里一个列表也是一个元素
li = [1,2,3,4,5]
li.append(['鸣人','佐助'])
print(li)  # [1, 2, 3, 4, 5, ['鸣人', '佐助']]

# append方法会修改原函数,没有返回值
li = [1, 2, 3, 3, 5, 5, 7, 8, 9]
print(li.append('鸣人'))  # None

append()方法追加的元素一定是最后一位,并且其没有返回值,是修改了原列表。

1.1.2 insert()

作用:添加一个数据到指定的位置。

语法:

列表名.insert(下标位置,数据)

接下来,我们尝试一下insert的使用方法:

# 用insert方法往列表中插入元素
li = [1, 2, 3, 3, 5, 5, 7, 8, 9]
li.insert(0,'小樱')
print(li)  # ['小樱', 1, 2, 3, 3, 5, 5, 7, 8, 9]

1.1.3 extend()

作用:添加一个序列类型到最后一位,并且把序列类型拆分。

语法:

列表名.extend(序列类型)

# 用extend方法往列表追加元素
li = [1, 2, 3, 3, 5, 5, 7, 8, 9]
li.extend(['迪迦','斯坦杰娜'])
print(li)  # [1, 2, 3, 3, 5, 5, 7, 8, 9, '迪迦', '斯坦杰娜']

append会把列表当成一个元素追加,而extend可以自动拆分成多个元素追加。

1.2 删除

1.2.1 pop()

作用:删除一个值,默认从最后一个开始删,也可以指定位置,被删除的值会作为返回值返回。

语法:

  • 列表名.pop()
  • 列表名.pop(下标)
# 默认删除最后一个元素
li = ['佐助', '鸣人', '娜美', '迪迦']
li.pop()
print(li)  # ['佐助', '鸣人', '娜美']

# 指定位置删除元素
li = ['佐助', '鸣人', '娜美', '迪迦']
li.pop(1)
print(li)  # ['佐助', '娜美', '迪迦']

# 删除的元素作为返回值返回
li = ['佐助', '鸣人', '娜美', '迪迦']
print(li.pop(2))  # 娜美

1.2.2 remove()

作用:删除一个指定的元素

语法:

列表名.remove(元素)

# 删除选中的元素
li = ['佐助','鸣人', '娜美', '迪迦']
li.remove('鸣人')
print(li)  # ['佐助', '娜美', '迪迦']

# 没找到元素则报错
li = ['佐助','鸣人', '娜美', '迪迦']
li.remove('鸣人')
print(li)  # 报错

1.2.3 clear()

作用:清空列表内的所有元素

语法:

列表名.clear()

# 直接将整个列表中的元素清空,变成空列表
li = ['佐助', '鸣人', '娜美', '迪迦']
li.clear()
print(li)  # []

1.2.4 del

作用:全局删除,可以删除一个变量

语法:

del 列表名[下标]

# 删除指定下标的元素
li = ['佐助', '鸣人', '娜美', '迪迦']
del li[0]
print(li)  # ['鸣人', '娜美', '迪迦']

# 可以删除整个列表
li = ['佐助', '鸣人', '娜美', '迪迦']
del li
print(li)  # 报错,因为 del li 已经删除了列表

1.3 修改

1.3.1 单个修改

直接通过下标进行修改。

语法:

列表名[下标] = 数据

# 单个修改,通过下标
li = ['佐助', '鸣人', '娜美', '迪迦']
li[2] = '索隆' 
print(li)  # ['佐助', '鸣人', '索隆', '迪迦']

1.3.2多个修改

通过切片的方式进行修改。

语法:列表名[起点下标:终点坐标]= [数据1,数据2,...数据n]


# 多个修改,通过切片
li = ['佐助', '鸣人', '娜美', '迪迦']
li[3:5] = [100,1000]  
print(li)  # ['佐助', '鸣人', '娜美', 100, 1000]

# 修改的元素可以多余切片元素数量
li = ['佐助', '鸣人', '娜美', '迪迦']
li[3:5] = [20,200,2000,2000]  # ['佐助', 1, 2, 20, 200, 2000, 2000, '娜美', '迪迦']
print(li)  # ['佐助', '鸣人', '娜美', 20, 200, 2000, 2000]

1.4 查找

1.4.1 index()

作用:根据内容获取指定位置的下标,找不到会报错,返回下标值。

语法:

列表名.index(参数) # 参数是要找的内容

# 使用index()方法来查找数据,返回值是对应下标,找不到会报错
li = ['佐助', '鸣人', '娜美', '迪迦']
num=li.index('鸣人')
print(num)  # 1

# index() 找不到数据,代码会报错
li = ['佐助', '鸣人', '娜美', '迪迦']
num=li.index('咕咕鸟')
print(num)  # 报错

# index() 可以指定范围来查找 index(数据,下标)
li = ['佐助', '鸣人', '娜美', '迪迦', '鸣人']
num = li.index('鸣人', 1)  # 从索引1之后开始查找'鸣人'
print(num)  # 1

1.4.2 count()

作用:统计数据出现的次数

语法:

列表.count(要找的内容)

# 使用count()计算数据出现的次数
li = ['佐助', '鸣人', '娜美', '迪迦', '鸣人']
num = li.count('鸣人')  
print(num)  # 2

1.4.3 sort()和sorted()

作用:排序(全int 或者float的列表才可以排序)

语法:

列表名.sort() -->升序

列表名.sort(reserve = True) -->降序

sorted.(列表名)  -->返回新列表

# 使用sort()排序
li1 = [33, 2, 1, 5, 6, 44, 77, 54, 1314, 520]
print(li1)  # [33, 2, 1, 5, 6, 44, 77, 54, 1314, 520]
li1.sort()
print(li1)  # [1, 2, 5, 6, 33, 44, 54, 77, 520, 1314] 升序
# 还可以降序
li1.sort(reverse=True)
print(li1)  # [1314, 520, 77, 54, 44, 33, 6, 5, 2, 1] 降序
# sort()是在原列表上修改,而sorted()则会生成新的列表
li1 = [33, 2, 1, 5, 6, 44, 77, 54, 1314, 520]
li2 = sorted(li1)
print(li1)  # [33, 2, 1, 5, 6, 44, 77, 54, 1314, 520]
print(li2)  # [1, 2, 5, 6, 33, 44, 54, 77, 520, 1314]

# sorted也可以降序排列
li2 = sorted(li1,reverse=True)
print(li2)  # [1314, 520, 77, 54, 44, 33, 6, 5, 2, 1]

1.5 列表生成式

在python中有着更简便的方法来生成/创建简单的列表,类似于之前的三目表达式,目的都是为了简化代码,通过一行代码就完成普通多行代码的功能。

练习1:生成[1,2,3,4,5,6,7,8,9]列表
li = []
for i in range(1,10):
    li.append(i)
print(li)  # [1, 2, 3, 4, 5, 6, 7, 8, 9]

# 列表生成式写法
print([i for i in range(1,10)])  # [1, 2, 3, 4, 5, 6, 7, 8, 9]

练习2:[1*1,2*2,...,9*9]
#普通写法
li = []
for i in range(1,10):
    li.append(i*i)
print(li)

#列表生成式写法
print([i*i for i in range(1,10)])

带if 的列表生成式

# 求1-10的偶数生成列表
li = []
for i in range(1, 10):
    if i % 2 == 0:
        li.append(i)
print(li)

#列表生成式写法
print([i for i in range(1, 10) if i % 2 == 0])

双层循环写法 

# 双层循环写法
li = []
for i in 'ABC':
    for j in '123':
        li.append(i + j)
print(li)  # ['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

print([i + j for i in 'ABC' for j in '123'])  # ['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

二、元组 tuple

元组一旦创立,其内容不可变,

如果元素数量固定,建议使用元组,因为占用的内存空间更小。

元组通常使用一对小括号将所有元素包围起来,但小括号不是必须的。

# 当多个值赋予变量的时候,就会以元组的形式
t = '火影忍者','海贼王'
print(t,type(t))  # ('火影忍者', '海贼王') <class 'tuple'>

2.1 查找

元组内容不能改变,所以没办法增加/删除/修改

2.1.1 count()

作用:统计某个元素在元组中出现的个数 ,类似于列表中的用法

语法:

元组名.count(数据)  # 数据就是要查找的内容

# count(),使用方法和列表一样
t = (123,'Google','JD','TaoBao',123)
print(t.count(123))  # 2
print(t.count('JD'))  # 1

2.1.2 index()

作用:从某个指定下标开始检索某个元素的下标值 ,类似于列表中的用法.

t = (123,'Google','JD','TaoBao',123)
print(t.index(123))  # 0print(t.index(123,2))  # 4

2.2 公共功能

1. 相加,两个元组相加生成一个新的元组

# 元组相加操作
data1 = ('张三','李四')
data2 = ('王五','赵六')
data3 = data1 + data2
print(data3)  # ('张三', '李四', '王五', '赵六')

2. 相乘,元组*整型,倍数后生成一个新的元组

# 元组乘法操作
data1 = ('张三','李四')
print(data1*3)  # ('张三', '李四', '张三', '李四', '张三', '李四')

3.获取长度 len()  

data1 = ('张三','李四')
print(len(data1))  # 2

 4.索引

# 索引操作,通过下标索引数据
data1 = ('张三','李四','王五','赵六')
print(data1[0])  # '张三'
print(data1[2])  # '王五'

5.切片

# 序列都可以进行的操作:切片
data1 = ('张三','李四','王五','赵六')
print(data1[0:3])  # '张三','李四','王五'

# 步长操作
data2 = ('张三','李四','王五','赵六','晓明')
print(data2[1:4:2])  # ('李四', '赵六')

6.for循环

# for循环遍历元组
data1 = ('张三','李四','王五','赵六')
for i in data1:    
	print(i)

注意:元组本身不可变,如果元组中包含其他可变元素,这些可变元素即可改变。

# 元组中的元素如果是可变类型,则这些类型自己本身可以改变
data = (99,88,77,['huoing',18],33)
print(data[3])  # ['huoing', 18]
data[3][0] = 'lufei'
print(data)  # (99, 88, 77, ['lufei', 18], 33)

  • 39
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值