一、列表的初识
1、列表的创建
1】创建一个列表有三种方式:
第一种: (常用)
li = [100,'pyton学习',True,[1,2,3]]
第二种:(不常用)
l1 = list() # 空列表
# l1 = list(iterable) # 可迭代对象
l1 = list('123')
print(l1) # ['1', '2', '3']
第三种 :列表推导式(后面会学到)
l1 = [i for i in range(1,5)]
print(l1) # [1, 2, 3, 4]
2】列表的索引切片
li = [100,'pyton学习',True,[1,2,3]]
#索引
print(li[0],type(li[0]))
print(li[1],type(li[1]))
print(li[-1])
print(li[3])
#切片
li = [1, 3, 2, "a", 4, "b", 5,"c"]
# 通过对li列表的切片形成新的列表l1,l1 = [1,3,2]
l1 = li[0:3]
print(l1)
# 通过对li列表的切片形成新的列表l2,l2 = ["a",4,"b"]
l2 = li[3:6]
print(l2)
# 通过对li列表的切片形成新的列表l4,l4 = [3,"a","b"]
l4 = li[1:-2:2]
print(l4)
3】增
append 追加,给列表的最后面追加一个元素
li = [1,2,'a']
li.append(666)
print(li)
li = ['张三','李四','白龙']
while 1:
name = input("请输入新员工的姓名:(Q或者q退出程序)")
if name.lower() == 'q':
break
li.append(name)
print(li)
break
内容输出:
请输入新员工的姓名:(Q或者q退出程序)mrxinog
['张三', '李四', '白龙', 'mrxinog']
insert 插入在列表的任意位置插入元素
li = ['李四','张三','a']
li.insert(1,'mrxiong')
print(li)
extend迭代着追加,在列表的最后面迭代着追加一组数据
li = [1,2,'a']
li.extend('mrxiong')
print(li)
li = [1,2,'a']
li.extend(['oldboy'])
print(li)
4】删
pop按照索引去删除
li = ['女神','吴老师','mrxiong','张三']
print(li.pop(-2)) #返回的是删除的元素
print(li)
输出结果:
mrxiong
['女神', '吴老师', '张三']
li = ['女神','吴老师','mrxiong','张三']
print(li.pop()) #空格是默认删除最后一个
print(li)
输出结果:
张三
['女神', '吴老师', 'mrxiong']
remove 指定元素删除
li = ['女神','吴老师','mrxiong','张三']
li.remove('mrxiong')
print(li)
输出结果:
['女神', '吴老师', '张三']
li = ['mrxiong','女神','吴老师','mrxiong','张三']
li.remove('mrxiong') #如出现有重名元组,默认删除从左到右第一个
print(li)
输出结果:
['女神', '吴老师', 'mrxiong', '张三']
clear()
li = ['mrxiong','女神','吴老师','mrxiong','张三']
li.clear()
print(li)
输出结果:
[]
del
#按索引来删
li = ['mrxiong','女神','吴老师','mrxiong','张三']
del li[-1]
print(li)
输出结果:
['mrxiong', '女神', '吴老师', 'mrxiong']
#按照切片(步长)删除
li = ['mrxiong','女神','吴老师','mrxiong','张三']
del li[::2]
print(li)
输出结果:
['女神', 'mrxiong']
5】改
按照索引来修改
li = ['mrxiong','女神','吴老师','mrxiong','张三']
li[0] = '哈哈'
print(li)
输出结果:
['哈哈', '女神', '吴老师', 'mrxiong', '张三']
按照切片修改
li = ['mrxiong','女神','吴老师','mrxiong','张三']
li[1:2] = '哈哈','叶叶'
print(li)
输出结果:
['mrxiong', '哈哈', '叶叶', 'one', '吴老师', 'mrxiong', '张三']
li = ['mrxiong','女神','吴老师','mrxiong','张三']
li[::2] = 'abc'
print(li)
输出结果:
['a', '女神', 'b', 'mrxiong', 'c']
6】查
索引查询
li = ['mrxiong','女神','吴老师','mrxiong','张三']
print(li[1])
输出结果:
女神
切片(步长)查询
li = ['mrxiong','女神','吴老师','mrxiong','张三']
l1 = li[1:4]
print(l1)
输出结果:
['女神', '吴老师', 'mrxiong']
li = ["mrxiong","女神","吴老师","mrxiong","张三"]
l1 = li[::2]
print(l1)
循环查询
li = ["mrxiong","女神","吴老师","mrxiong","张三"]
for i in li:
print(i)
输出结果:
mrxiong
女神
吴老师
mrxiong
张三
7】列表相加与整数相乘
l1 = [1,2,3]
l2 = [4,5,6]
print(l1+l2)
输出结果:
[1, 2, 3, 4, 5, 6]
l1 = [1,2,3]
l2 = [4,5,6]
print(l1*3)
输出结果:
[1, 2, 3, 1, 2, 3, 1, 2, 3]
练习题:
列表中追加元素"seven",并输出添加后的列表
li = ["mrxiong","WuSir","ritian","barry","wenzhou"]
li.append("serven")
print(li)
请在列表的第1个位置插入元素"Tony",并输出添加后的列表
li = ["mrxiong","WuSir","ritian","barry","wenzhou"]
li.insert(1,"tom")
print(li)
请修改列表第2个位置的元素为"Kelly",并输出修改后的列表
li = ["mrxiong","WuSir","ritian","barry","wenzhou"]
li[2] = "Kelly"
print(li)
请将列表l2=[1,"a",3,4,"heart"]的每一个元素添加到列表li中,一行代码实现,不允许循环添加。
li = ["mrxiong","WuSir","ritian","barry","wenzhou"]
l2=[1,"a",3,4,"heart"]
print(li+l2)
请将字符串s = "qwert"的每一个元素添加到列表li中,一行代码实现,不允许循环添加。
li = ["mrxiong","WuSir","ritian","barry","wenzhou"]
s = "qwert"
li.extend(s)
print(li)
请删除列表中的元素"ritian",并输出添加后的列表
li = ["mrxiong","WuSir","ritian","barry","wenzhou"]
li.remove("ritian")
print(li)
请删除列表中的第2个元素,并输出删除的元素和删除元素后的列表
li = ["mrxiong","WuSir","ritian","barry","wenzhou"]
print(li.pop(2))
print(li)
请删除列表中的第2至4个元素,并输出删除元素后的列表
li = ["mrxiong","WuSir","ritian","barry","wenzhou"]
del li[2:4]
print(li)
2、 列表的嵌套
将li中的'taobao'变成大写并放回原处
li = [1,2,'taobao',[1,'mrxiong',3]]
li[2] = li[2].upper()
print(li)
给小列表[1,'mrxiong',3]追加一个元素,'python'
li = [1,2,'taobao',[1,'mrxiong',3]]
li[3].append('python')
print(li)
将列表中的'mrxiong'通过字符串拼接的方式在列表中变成'mrxiongsb'
li = [1,2,'taobao',[1,'mrxiong',3]]
li[3][1] = li[3][1]+'sb'
print(li)
lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
将列表lis中的"tt"变成大写(用两种方式)。
方法一:
lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
lis[3][2][1][0]=lis[3][2][1][0].upper()
print(lis)
方法二:
lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
lis[3][2][1][0]= "TT"
print(lis)
将列表中的数字3变成字符串"100"。
lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
lis[1], lis[3][2][1][1] = 100, 100
print(lis)
将列表中的字符串"1"变成数字101。
lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
lis[3][2][1][2] = 101
print(lis)
3、元组
只读列表。存大量的数据,可以索引、切片(步长)操作
tu = (100,'mrxiong',True,[1,2,3])
print(tu[0])
print(tu[3])
print(tu[:3])
for i in tu:
print(i)
如上例,虽然元组是不可以修改,查元组里的小列表[1,2,3]里的内容是可以增删改的
tu = (100,'mrxiong',True,[1,2,3])
del tu[3][0]
print(tu)
输出结果:
(100, 'mrxiong', True, [2, 3])
注:重要数据,用户名,密码,个人信息,不想让别人改动的一些数据,存在元组中
元组的拆包,分别赋值
tu = (1,2,3,4)
a, b, c, d= tu
print(a,b,c,d)
输出结果:1 2 3 4
注:元组的拆包分别赋值,必须要和元组一一对应
4、range
类型列表,自定制数字范围的数字列表
r = range(10) # 类似于可定议范围数字列表[0,1,2,3,4,5,6,7,8,9,10]
print(r)
for i in r:
print(i)
for i in range(1, 20):
print(i)
以步长打印1--20的偶数
for i in range(2, 20, 2):
print(i)
打印20----1
for i in range(20, 0, -1):
print(i)
例:
#利用for循环,利用range将ll列表的所有索引依次打印出来
ll = [1,2,3,4,5,'python',5]
for i in range(len(ll)):
print(i)
输出结果:
0
1
2
3
4
5
6