python教程(二)之列表与元组

在开始之前,首先普及一个概念,就是序列,其中包含列表、元组、字符串等,通过下面的内容使你能尽可能牢记他们的概念和使用,但学习之后一定要自己练习并查询那些还不清楚的部分。
强烈建议将我的代码和注释放在自己的环境下执行一遍,并按照自己的想法修改并实践,这样才能加强印象并掌握。

2.序列-1.容器

#下面为两个列表组合,a,b,c均为容器,可包含其他对象
a=["Json",33,"male"]
b=["Lary",22,"female"]
#c=a+b #['Json', 33, 'male', 'Lary', 22, 'female']
c=[a,b] #[['Json', 33, 'male'], ['Lary', 22, 'female']]
print(c)

2.序列-2.索引

#目的为根据用户输入内容(数字)返回列表中的内容
a=[
    'first',
    'second',
    'third',
    'fouth',
    'fifth'
]
b=['game','vidio','study']+2*['study']+6*['game']
x=input("你是第几个进入的人(1-5):")
#根据用户输入的数字,在a,b两个列表中找到对应的内容打印出来
y=input("你选择第几项作为下一个要做的事(1-11):")
print("你是"+a[int(x)-1]+",你要去"+b[int(y)-1])

2.序列-3.切片

#将已存在的列表切片,即访问特定范围的元素
a="http://www.baidu.com"
#print(a[11:-4]) #baidu
print("域名为:"+a[11:-4])
#常用于获取域名等

b=[1,2,3,4,5,6,7,8,9,10]
#print(b[3:6])# [4, 5, 6]
#序列[起始索引:结束索引],这是参数格式,注意返回的结果包含起始索引那个元素
#但不包含结束索引那个元素,只截止到结束索引前面个元素
#索引可以是负数,-1是倒数第一个元素,以此类推
#索引参数同样可以空着,像这样
# print(b[:-4])# [1, 2, 3, 4, 5, 6]
#甚至
# print(b[:]) #[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]这样就返回所有元素了

#进阶内容:
#步长:在切片时,会省略一个或多个元素,这就是步长,索引的第三个参数
# print(b[3:9:2]) #[4, 6, 8] 它是每隔一个元素获取一个元素,因为步长为2
#步长默认为1,注意,步长不能为0,但可以为负数,例如:
# print(b[9:3:-2]) #[10, 8, 6]
#步长为负数时,就会从序列结尾开始切片,并且第一个索引必须比第二个索引大
#当省略前两个索引,且步长为负数时,会自动得出正确结果
# print(b[::-2])#[10, 8, 6, 4, 2]


2.序列-4.序列相加

#序列包含列表、元组、字符串,但不能简单相加来结合
a=[1,2,3]
# b=a+"hello world"
# print(b)#TypeError: can only concatenate list (not "str") to list
#这样会报错,这里提前给予一个解决办法
# b=a+list("hello world")
# print(b)#[1, 2, 3, 'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
#list可将字符串转化为列表,再来一个
# b=str(a)+"hello world"
# print(b)#[1, 2, 3]hello world
#同样str可以将列表转换为字符串,还有其他办法,注意切片返回的内容还是序列
#所以不能用这种方法:
# b=a[1:2]+"hello world"
# print(b)#TypeError: can only concatenate list (not "str") to list

2.序列-5.乘法

#乘法在序列中是复制,对数字就是数学,记住这点就好了
a=[1,2,3]
print(a*5)#[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]

2.序列-6.成员判断

#in运算符,它检查某个值是否在列表中,存在返回true,不存在返回false
# a=[1,2,3,4,5,1,2,3,1,1,2]
# b=input("请输入一个数字,判断是否存在列表中:")
# if int(b) in a :print("存在")
# else : print("不存在")
#这种方法一般会应用在一些垃圾信息的筛查过滤中

# 某个列子用来判断登录信息
user_id=input("用户名:")
user_psw=input("密码:")
user_info=[["aaa","123"],["bbb","234"]]
if [user_id,user_psw] in user_info :print("登录成功")
else :print("登陆失败")

2.序列-7.列表操作

#这里普及一个知识点,即列表是可修改的,元组和字符串不能修改
#这里开始介绍列表的一些基础操作
a=[1,2,3]
# a[1]=5
# print(a)#[1, 5, 3],这种方法简单的修改列表中某个索引下的内容,顺便回想一下
#之前的切片
#1.切片赋值
# a[1:]=[5,6]
# print(a)#[1, 5, 6],这里就理解为从索引1开始,后面所有元素被替换
# a[1:2]=[5,6]
# print(a)#[1, 5, 6, 3],这里就是索引1开始到索引2(被替换了)替换掉

#2.删除
# del a[1]
# print(a)#[1, 3]
#这里删除同样可以用切片赋值为空的列表
a[1:2]=[]
print(a)#[1, 3]
#但注意,不要用a[1]=[]这种方式,除非你仍希望一个空列表占位原先的元素位置

2.序列-8.列表方法

#除了对列表一些简单操作外,python提供了一些方法
#1.append将对象添加到末尾
a=[1,2,3]
# a.append(4)
# print(a)#[1, 2, 3, 4]
#简单的添加一个元素通常不能满足需求,因为一定会有更复杂的要求
b=[4,5,6]
# a.append(b)
# print(a)#[1, 2, 3, [4, 5, 6]],这样的通常不是我们要的,
#采用之前的切片赋值
# a[3:3]=b
# print(a)#[1, 2, 3, 4, 5, 6]
#目前的知识我们没法遍历一个列表,所以暂时没法用append达到我们的目的

#2.clear清除列表
# a.clear()
# print(a)#[]

#3.copy复制列表
#首先看一个例子
c=[1,2,3,4,5]
# d=c
# d.append(6)
# print(str(c)+''+str(d))#[1, 2, 3, 4, 5, 6][1, 2, 3, 4, 5, 6]
#可以看到我修改了d但是c也变了,显然d=c不是复制了c列表,而是将d指向了c
d=c.copy()
d.append(6)
# print(str(c)+''+str(d))#[1, 2, 3, 4, 5][1, 2, 3, 4, 5, 6]
#这样我们就达到了目的

#4.count某个元素在列表中的个数
e=[3,4,5,1,2,3]
# print(e.count(3))#2

# 5.extend将多个值添加至列表末尾
#上面append没能做到的事这里做到了
a.extend(b)
# print(a)#[1, 2, 3, 4, 5, 6]
#这里有一个要注意的地方,就是列表方法大多都不返回值,例如extend修改了a,但不
#返回任何东西
# a=a+b#这种方法也可以,但建议使用更加正式的extend,因为实际项目肯定比这复杂的多
# print(a)

# 6.index查找值第一次出现的索引
f=["int","float","print","index","extend","append"]
# print(f.index("index"))#3

# 7.insert将对象插入列表
f.insert(3,"insert")
# print(f)#['int', 'float', 'print', 'insert', 'index', 'extend', 'append']

# 8.pop删除一个元素并返回这个元素
# f.pop()
# print(f)#['int', 'float', 'print', 'insert', 'index', 'extend'],删除了最后一个元素
#当pop参数为空时,默认删除最后一个元素,这是因为“栈”这个数据结构,后入的先出
f.pop(0)
# print(f)#['float', 'print', 'insert', 'index', 'extend', 'append']
#根据索引删掉了第一个元素

#9.remove删除指定值的第一个元素
g=[1,2,3,4,5,1,2,3,4,5,1,2,3,4,5]
g.remove(3)
# print(g)#[1, 2, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5],只有第一个3被删除了

#10.reverse反转元素
g.reverse()
# print(g)#[5, 4, 3, 2, 1, 5, 4, 3, 2, 1, 5, 4, 2, 1]

#11.sort对列表直接排序
g.sort()
# print(g)#[1, 1, 1, 2, 2, 2, 3, 3, 4, 4, 4, 5, 5, 5]
#学过js的应该知道这东西简直不要太好用
#同样注意,这个方法不会返回任何东西,不要直接赋值或输出,它只修改原列表

#进阶内容:高级排序
h=["a123","ab131c12223","ab331c","ab131c12"]
# h.sort()
# print(h)#['a123', 'ab131c12', 'ab131c12223', 'ab331c']
#这种是sort方法的默认排序结果,如果要按照特定的方式排序,就按照下面的方法
h.sort(key=len)
# print(h)#['a123', 'ab331c', 'ab131c12', 'ab131c12223']
#结果就是按照元素长度进行排序,sort接受两个可选参数,分别是key(索引)
#和reverse(是否反转)
#根据实际需要,参数的值可以是某个自定义的函数返回值,这个以后再说

#补充内容:元组
#(1,2,3)这样子的是元组,(1,)这样的也是元组,甚至1,2,3这样的还是元组
#但要注意,如果要对元组进行一些操作时,必须要用到逗号和括号(,)
print(3*(11))#33
print(3*(11,))#(11, 11, 11)
#元组的其他概念请在网上查找,它仍然是一个很重要的知识,但目前不需要太深入

以上内容全部手打,如果对你有帮助,请点赞,我后续会补充更多知识内容,有需求的可以点个关注,同时欢迎交流,互相提升

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值