小甲鱼零基础学习python_6 【元组与列表】


今天学习了Python的列表及元组

提到元组,一时半会只觉熟悉,却想不起了来源,直到看到tuple才想起来,在学习数据库时也有这个元组。不过数据库的元组与Python的元组却是大有区别,python的元组与列表,都与C-like语言里有许多相似的地方;
先讲python的列表,再讲元组,再讲二者的不同;

· 列表

数组一个基本要求:存储同种类型的数据

Python中没有定义数据类型,所以列表有很大的包容性 ,是一个打了激素的数组

一.创建新列表

1.创建一个普通列表


#----- 普通列表 ---------

#字符串列表
member=['yhr', 'love', 'zwh']
for i in member:
    print(i, end=' ')


#数字列表
number=[1,2,3,4,5]
for i in number:
    print(i, end=' ')
print('\n')

2.创建一个混合列表

#------------混合列表 ------------

mix=[1,'yhr',3.14,['a','b',5,6]]
for i in mix:
    print(i, end=' ')

3.创建一个空列表

#------------空列表-----------
empty=[]
print(len(empty))
#打印列表长度
二.向列表添加元素
append()方法,方法与bif不同,因为append是属于对象的方法

【只能一次性添加一个元素】

empty.append('yhr')

extend()方法 参数是一个列表,用一个列表扩展另外一个列表
empty.extend(['loves', 'zwh'])

以上两个方法均默认添加至末尾,可以尝试插入

Insert() #第一个参数为插入位置下标,注意:从0开始 第二个参数类型为参数,与append相似
#第一个参数为插入位置下标,注意:从0开始
empty.insert(0, 'hahaha')
三.从列表中获取元素

利用列表的index索引值获得单个元素
member[0],member[1]…..

print(empty)
print([empty[0]])

这里写图片描述

四.从列表删除元素
remove() 列表对象的方法 参数为列表中的元素 若待删除元素不存在,则会报错
print(empty)
empty.remove('yhr')
for i in empty:
    print(i, end=' ')

这里写图片描述

del() 参数为 member删除整个列表 / member[index] 删除列表中某个具体的
print(empty)
del empty[0]
for i in empty:
    print(i, end=' ')

这里写图片描述

pop() 列表对象的方法 python的列表事实上是利用栈来进行存取的:
参数可以不选择,pop方法则是从列表中取出最后一个元素并且返回;
参数可以选择,则为数组索引
print(empty)
empty.pop()
for i in empty:
    print(i, end=' ')

这里写图片描述

五.列表分配 slice

利用索引值,每次可以从数组或取一个值,但是可以利用列表分片,一次性从列表获取多个元素

print(empty)
#列表分片,参数为索引值(默认0开始) 不包括index为stop的值(默认为表尾)
print(empty[1:3])
print(empty[:3])
print(empty[:])

这里写图片描述

六.列表的一些常用操作符

·比较操作符
Eg:

list1=[123,456]
list2=[234,123]
for i in list1:
    print(i)

print(list1>list2)
#发现只比较列表第一0个参数

list1=['abc']
list2=['abd']
#应该是比较ascaii码?
print(list1<list2)
list3=['ab']
print((list1<list2)and(list2>list3))

这里写图片描述

·逻辑操作符

·连接操作符


#+类似于字符串拼接,也类似于extend方法, 用一个列表扩展另外一个列表
list3=list1+list2
print(list3)

#但是+不能连接一个新元素  因为+两边要求类型一样,均为字符串或者列表才可以
#TypeError: can only concatenate list (not "str") to list
#list3=list1+"hahaha"
print(list3)

·重复操作符

#重复操作符可以作为复制
list3*3
print(list3)

list3*=3
print(list3)

这里写图片描述
·成员关系操作符

print(list3)
#成员关系操作符  in  /   not in
print('abc'in list3)
print('abc'not in list3)

这里写图片描述

成员关系操作符只能判定一层关系,不能判定列表里的列表的元素
类似于break continue 只能处理本层循环,无法处理母层循环
list4=[123,list3]
print(list4)
print('\n')
print('abc'in list4)
#成员关系操作符只能判定一层关系,不能判定列表里的列表的元素,类似于break continue

#但是可以这样
print('abc'in list4[1])
print(list4[1][2])
#因为此时list[1]指代一个列表,至于list4[1][2]则为列表里一个列表里的元素

这里写图片描述

七.列表拷贝
#列表的拷贝
empty2=empty[:]   #合理的列表拷贝
empty3=empty   #其实这种做法不太可取

print(empty)
print(empty2)
print(empty3)

print('\n--------------')

empty.reverse()

print(empty)
print(empty2)
print(empty3)

这里写图片描述

两者不同之处解释如下:

empty2=empty[:]   #合理的列表拷贝 拷贝元素,重新生成一个新的列表
empty3=empty   #仅仅新建一个变量名,指向同一个地址,类似于C-like指针

这里写图片描述

八.小函数
count计算参数在列表里出现的次数
#count计算参数在列表里出现的次数
print(list3)
print(list3.count('abc'))

这里写图片描述

index默认返回0开始元素第一次出现的索引
print(list3.index('abc'))
#index返回start到stop元素第一次出现的索引
print(list3.index('abc',1,5))

这里写图片描述

reverse 将整个列表原地翻转
print(list3)
#reverse  将整个列表原地翻转
list3.reverse()
print(list3)

这里写图片描述

sort 用指定的方法对列表元素进行排序,默认从小到大
#sort 用指定的方法对列表元素进行排序,默认从小到大
list6=[1,4,2,3,6,8,65,22]
list6.sort()
print(list6)

print('-----------\n')

#sort有三个参数  func指定排序方法,key为搭配关键字,reverse默认为False
#sort(func,key,reverse)
list6.sort(reverse=True)  #从小到大排序后翻转
print(list6)

这里写图片描述


· 元组

元组 : 一个带上了枷锁的列表
元组其实与列表在很多方面非常相似;元组和列表最大的不同:

列表可以任意的修改添加删除排序等操作列表的元素;但是元组不可以
1.创建元组

大部分创建元组用的小括号 列表是中括号:

tuple1=(1,2,3,4,5,6,7,8,9)

print(tuple1)
print(tuple1[3])
print(tuple1[:7])

tuple2=tuple1[3:7]
print(tuple2)

这里写图片描述

但是加上小括号也不一定是元组
这里写图片描述

就算没有小括号,也可能是元组

这里写图片描述

所以对对于元组来说,逗号是关键

但是空元组为:

Temp=()
创建只有一个元素的元祖,可以加一个逗号:

这里写图片描述

2.更新元组
虽然元组建立后不能更改内容:
#元组元素不可修改
#tuple1[3]=2 
#TypeError: 'tuple' object does not support item assignment
但是可以做一些小小的更新:
分片一个元组或者列表时,参数为索引值(默认0开始) 不包括index为stop的值(默认为表尾)
#更新一个元组

temp=('小甲鱼','yhr','zwh','hahaha')
print(temp[:2])
print(temp[2:])

print('-----------\n')

#temp=temp[:2]+('loves')+temp[2:]   #xxxxx 这是不对的!
#一定要加逗号,拼接要求两边相同类型!!

temp=temp[:2]+('loves',)+temp[2:]
print(temp)
#原来的temp元组其实还在,但是由于没有标签指向他,
#过一会被python回收机制回收

这里写图片描述

3.删除元组
#删除整个元组
#del temp

这里写图片描述
可以发现在删除temp元组后,尝试访问temp元组是会报错的。

同时,当一个元组里没有任何标签的时候,前文提到的Python回收机制,会将元组回收。
4.元组的一些操作符:

·拼接操作符+ :拼接要求两边相同类型
·重复操作符 *

注意区分:
8*(8)=64
8*(8,)=(8,8,8,8,8,8,8,8)

·
成员关系操作符 in not in
·关系操作符 > <….
·逻辑操作符 and or…..


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值