【Python学习日记3】数据类型类型之列表与元组

目录

系列文章目录 

前言

一、列表和元组创建

1、列表(list)

2、元组(tuple)

二、相关的函数

1.索引/切片

2.列表/元组内的数据的修改

3.列表/元组的其他的一些函数


系列文章目录 


Python学习日记1--数据类型之数字与字符串

Python学习日记2--数据类型之布尔值与运算符

Python学习日记3--数据类型之列表


前言

现如今,ChatGPT、文心一言等大模型风靡全球,其中涉及到基于Python语言进行的深度学习、数据爬取等内容使得学习Python语言变得十分重要。同时,Python因为其第三方库的存在,在代码仿真等方面也有着独特的优势。

本文旨在记录学习Python的历程,仅仅为了自身学习使用,方便自己记录一些可能会遗忘的知识点,为之后学习了解机器学习等更深层次知识打下基础。


一、列表和元组创建

1、列表(list)

列表是一个有序可更改的集合。用方括号编写:

list1 = [1,2,3,4]        #列表通过方括号编写,内部数据用逗号区分
list2 = ['a','b','c']

还可以通过类型转换进行:

list1 = list(('a','b','c','a','b','c'))     #需要有这个双括号,不然会报错

2、元组(tuple)

元组是一个有序不可更改的集合。用圆括号编写:

tuple1 = (1,2,3,4)        #元组通过圆括号编写,内部数据用逗号区分
tuple2 = ('a','b','c')

也可以通过类型转换得到:

tuple1 = tuple(('a','b','c','a','b','c'))   #需要有这个双括号,不然会报错
#其实不一定是双括号,也可以是这样:
tuple2 = tuple(['a','b','c','a','b','c'])   #本质上就是先有了一个数据类型,再转化为tuple类型
print(type(tuple2))                         #仍然是tuple类

 值得注意的是,如果希望创建一个只包含一个元素的元组,那么需要这样写:

tuple1 = ('1',)         #需要有一个逗号
print(type(tuple1))
tuple2 = ('1')          #会被认定为str
print(type(tuple2))

 

二、相关的函数

列表和元组的使用是十分类似的,在绝大多数的函数上的使用都是一样的

1.索引/切片

列表/元组的正索引是第一项是从0开始,负索引是从-1开始,-1即表示最后一个项目

索引范围:可以通过设置索引的起点与终点来只选出其中的一部分数据。所有的索引操作,是左闭右开的操作,即会包含起点,不包含终点

list1 = ["1","2","3","4","5","6"]
tuple1 = ("1","2","3","4","5","6")
#正索引
print(list1[2:5])        #会打印出第3项到第5项,即算上了起点,没有算终点
print(tuple1[2:5])
#负索引
print(list1[-4:-1])      #会打印出倒数第4项到倒数第2项
print(tuple1[-4:-1])

输出结果为:

 

这里需要注意两点:

1、起点需要在终点前面,即起点小于终点,否则会返回一个空的列表/元组。

list1 = ["1","2","3","4","5","6"]
tuple1 = ("1","2","3","4","5","6")
print(list1[5:2])        #返回一个空的列表
print(tuple1[5:2])       #返回一个空的元组

2、如果想要包含终点的元素,但是终点元素正好又是数据集的最后一项,那么可以:

list1 = ["1","2","3","4","5","6"]
tuple1 = ("1","2","3","4","5","6")
print(list1[2:])        
print(tuple1[2:])
#负索引
print(list1[-4:])      #会打印出倒数第4项到最后一项
print(tuple1[-4:])

 

2.列表/元组内的数据的修改

元组是不可更改的数据类型,所以在被创建之后,无法对其本身直接进行改变。

所以,对于元组的改变就很复杂,需要将其转化为列表等其他种类的数据之后,操作完成再转为元组。其实也就相当于重新创建了一个新的元组,将原有的元组进行覆盖。

1、单个项目的修改:

list1 = ["1","2","3","4","5","6"]
print(list1)
list1[2] = '6'        #直接对其中进行操作就行
print(list1)

2、 添加项目:主要是append、insert这两个函数

list1 = ["1","2","3","4","5","6"]
print(list1)
list1.append('add')     #会添加到列表的最后
list1.insert(5,"akks")  #里面的数字(必须有)就是列表的位置,0为最开始
list1.insert(10,"test") #本身数据量不足以达到10,所以只会添加到列表的最后
print(list1)
print(list1[10])        #没有这个数据,所以会报错

3、删除指定的项目:主要是remove、pop两种函数和del关键字

list1 = ['a','b','c','a','b','c']
print(list1)
list1.remove('a')       #只会删除第一次出现的'a'
print(list1)
list1.pop(2)            #指定一项删除,如果不指定则删除最后一项
print(list1)
del list1[3]
print(list1)
list1.clear()            #这个函数可以清空列表,只留下一个名为list1的空列表

4、整体删除

元组内部的数据是无法直接被更改的,所以元组只能被整体的操作。

list1 = ['a','b','c','a','b','c']
tuple1 = ('a','b','c','a','b','c')
del list1
del tuple1  
print(list1)        #会报错,现在已经没有list1和tuple1这两个变量了
print(tuple1)

3.列表/元组的其他的一些函数

1、复制列表:copy函数、list函数

列表的复制不能通过简单的赋值进行,因为这样只是一个引用,原列表发生变化之后,新的列表也会随之变化。

list1 = [1,3,6,8,5,4]
list2 = list1                   #这种方式只是一种引用,两者之间仍有联系
list3 = list1.copy()            #完全复制了一个新的列表,两者没有关系
list4 = list(list1)             #效果和 list3 一样
print("原有的列表:",list2)
list1[2] = 'changed'
print('list1发生变化后的list2:',list2)
print('list1发生变化后的list3:',list3)

 

2、合并列表/元组:使用 + 来进行

list1 = [1,3,6,8,5,4]
list2 = ['a','b','c']
tuple1 = tuple(list1)
tuple2 = tuple(list2)
print('list1:',list1)
print('list2:',list2)
print('tuple1:',tuple1)
print('tuple2:',tuple2)
list3 = list2 + list1
#list2.extend(list1)            这样直接会把list1的列表添加到list2的结尾
print("list2 + list1:",list3)
tuple3 = tuple1 + tuple2
print('tuple1 + tuple2:',tuple3)

3、其他的函数:

计数问题:count函数,会返回具体出现的次数,如果没出现则为0

list1 = [1,1,1,2,2,5,6]
print(list1.count(1))
tuple1 = tuple(list1)
print(tuple1.count(1))

搜索内部的元素(列表/元组均可使用)

list1 = [1,3,6,8,5,4]
list2 = ['a','b','c','a','b','c']
list3 = list2 + list1
print(list3)
print(list3.index('a'))     #返回搜索到的第一个数据位置,如果没有就会报错
#因为会有报错,所以可能一般使用这样的:
i = 0
flag = 0
for x in list3:
    if(x == 'a'):           #这样还可以搜索到所有位置的'a'
        print(i)        
        flag = 1
    i += 1
if(flag != 1):  print('没有该目标')

颠倒顺序(只有列表):reverse函数

list1 = [1,3,6,8,5,4]
list2 = ['a','b','c','a','b','c']
list3 = list2 + list1
print(list3)
list3.reverse()
print(list3)

 排序(对于列表):sort函数

#sort的基本结构:list.sort(reverse=Ture|False,key=Func)
cars1 = ['Porsche', 'BMW', 'Volvo']
cars1.sort()                #默认进行字母顺序的升序排列
print('升序排列:',cars1)
cars1.sort(reverse=True)    #降序排列
print('降序排列:',cars1)
# 返回值的长度的函数:
def myFunc(e):
  return len(e)
cars2 = ['Porsche', 'Audi', 'BMW', 'Volvo']
cars2.sort(key=myFunc)       #按长度来进行排序
print('按长度排序:',cars2)

 输出结果:

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值