day004
一、列表的初识
-
why:int bool str:'123 True 太白'
- str: 存储少量的数据。
- str:切片还是对其进行任何操作,
但是! 获取的内容全都是str类型!存储数据单一
-
what:list
- l1 = [ 0, 'alex',True,[1, 2, 3] ] 承载任意数据类型,存储大量的数据.
- python常用的
容器型数据类型。在python中叫 list 列表, 其他语言:Java: 数组 - 列表是有序的,
可索引,切片(步长)
-
索引,切片,步长
li = [100, '太白', True, [1, 2, 3]]
# 索引
print(li[0], type(li[0])) # 100 <class 'int'>
print(li[1],type(li[1])) # 太白 <class 'str'>
print(li[-1],type(li[-1])) # [1, 2, 3] <class 'list'>
# 切片 (顾头不顾腚)
print(li[:2]) # [100, '太白']
#相关练习题:
l1 = [1, 3, 2, "a", 4, "b", 5, "c"]
# 通过对li列表的切片形成新的列表l1,l1 = [1,3,2]
print(l1[:3])
# 通过对li列表的切片形成新的列表l2,l2 = ["a",4,"b"]
print(l1[3:6])
print(l1[3:-2]) # 或者 先定去屁股位置 ,Right可逆向取
# # 通过对li列表的切片形成新的列表l4,l4 = [3,"a","b"]
print(l1[1:-2:2])
# 通过对li列表的切片形成新的列表l6,l6 = ["b","a",3]
print(l1[-3::-2])
print(l1[-3:-8:-2]) # 或者 先定去屁股位置 ,Right可逆向取
二、列表的创增删改查
-
列表的创
-
# 方式一 l1 = [1, 2, 'Alex'] print(l1) # [1, 2, 'Alex'] # 方式二 l2 = list() l3 = list('fhsaf') print(l2) # [] print(l3) # ['f', 'h', 's', 'a', 'f'] # 方式三:列表推导式 后面讲
-
-
列表的增
-
# case1: append 追加的意思 l1 = ['太白', '女神', 'xiao','吴老师', '闫龙'] l1.append('xx') print(l1) # ['太白', '女神', 'xiao', '吴老师', '闫龙', 'xx'] print(l1.append('xx'),type(l1.append('xx'))) # None <class 'NoneType'> # # 不能打印它,是个命令 # 举例: l1 = ['太白', '女神', '吴老师', 'xiao', '闫龙'] while 1: # True就是 1 name = input('请输入新员工姓名:(Q或者q退出程序):') if name.upper() == 'Q': break # 不能用exit l1.append(name) print(l1) # case2: insert 插入 l1 = ['太白', '女神', 'xiao','吴老师', '闫龙'] l1.insert(2,'wusir') print(l1) # ['太白', '女神', 'wusir', 'xiao', '吴老师', '闫龙'] # case3: extend 迭代着追加 l1 = ['太白', '女神', 'xiao','吴老师', '闫龙'] l1.extend('abcd') print(l1) # ['太白', '女神', 'xiao', '吴老师', '闫龙', 'a', 'b', 'c', 'd'] l1.extend(['alex']) print(l1) # ['太白', '女神', 'xiao', '吴老师', '闫龙', 'alex'] l1.extend(['alex', 1, 3]) print(l1) # ['太白', '女神', 'xiao', '吴老师', '闫龙', 'alex', 1, 3] l1.extend(['alex', 1, 3, [8,9]]) print(l1) # ['太白', '女神', 'xiao', '吴老师', '闫龙', 'alex', 1, 3, [8, 9]]
-
-
列表的删
-
# case1: pop 按照索引位置删除 l1 = ['太白', '女神', '吴老师', 'xiao', '闫龙'] l1.pop(-2) # 按照索引删除 (返回的是删除的元素!!!) print(l1.pop(-2)) # 吴老师 (返回的是删除的元素!!!) print(l1) # ['太白', '女神', '闫龙'] a1 = ['太白', '女神', '吴老师', 'xiao', '闫龙'] a1.pop() # 默认删除最后一个 print(a1) # ['太白', '女神', '吴老师', 'xiao'] # case2: remove 指定元素删除, 如果有重名元素,默认删除从左数第一个 l1 = ['xiao', '太白', '女神', '吴老师', 'xiao', '闫龙','xiao' ] l1.remove('xiao') # 有重名元素,默认删除从左数第一个 print(l1) # ['太白', '女神', '吴老师', 'xiao', '闫龙', 'xiao'] # l1.remove('xia') # 只能是元素,所以运行错误 # print(l1) # 运行错误 # case3: clear(了解) l1 = ['太白', '女神', '吴老师', 'xiao', '闫龙'] l1.clear() # 清空,注意所有元素删除,只剩下躯壳 print(l1) # [] # case4: del 可以按照索引删除,也可以按照切片(步长)删除 ***重要 # # 按照索引删除 l1 = ['太白', '女神', '吴老师', 'xiao', '闫龙'] del l1[-1] print(l1) # ['太白', '女神', '吴老师', 'xiao'] # # 按照切片(步长)删除 del l1[::2] print(l1) # ['女神', 'xiao']
-
-
列表的改
-
# 按照索引改值 l1 = ['太白', '女神', '吴老师', 'xiao', '闫龙'] l1[0] = '男神' print(l1) # ['男神', '女神', '吴老师', 'xiao', '闫龙'] l2 = ['太白', '女神', '吴老师', 'xiao', '闫龙'] l2[-2] = '周杰伦' print(l2) # ['太白', '女神', '吴老师', '周杰伦', '闫龙'] # 按照切片改(了解) l1 = ['太白', '女神', '吴老师', 'xiao', '闫龙'] l1[2:] = 'fsdag' # 迭代的方式 print(l1) # ['太白', '女神', 'f', 's', 'd', 'a', 'g'] # 按照切片(步长)(了解) l1 = ['太白', '女神', '吴老师', 'xiao', '闫龙'] l1[::2] = 'abc' print(l1) # ['a', '女神', 'b', 'xiao', 'c'] l2 = ['太白', '女神', '吴老师', 'xiao', '闫龙'] l2[::2] = 'abcd' print(l2) # 放不进去了, 必须一一对应, 运行错误
-
-
列表的查
-
# 可索引,可切片(步长) # 比如: l3 = ['太白', '女神', '吴老师', 'xiao', '闫龙'] for i in l3: print(i)
-
三、列表的嵌套
l1 = [1, 2, 'taibai', [1, 'alex', 3,]]
# 1, 将l1中的'taibai'变成大写并放回原处。
# 2,给小列表[1,'alex',3,]追加一个元素,'老男孩教育'。
# 3,将列表中的'alex'通过字符串拼接的方式在列表中变成'alexsb'
# 怎么做呢?
l1 = [1, 2, 'taibai', [1, 'alex', 3,]]
# 1, 将l1中的'taibai'变成大写并放回原处。
print(l1[2].upper(),type(l1[2].upper())) # TAIBAI <class 'str'>
l1[2] = l1[2].upper() # l1[2].upper() 即为 'TAIBAI'
print(l1) # [1, 2, 'TAIBAI', [1, 'alex', 3]]
# 2,给小列表[1,'alex',3,]追加一个元素--->'老男孩教育'
print(l1[-1]) # 先找到小列表 # [1, 'alex', 3]
l1[-1].append('老男孩教育') # 这时的 l1, '老男孩教育'加进去了没有?
print(l1) # [1, 2, 'taibai', [1, 'alex', 3, '老男孩教育']]
# 3,将列表中的'alex'通过字符串拼接的方式在列表中变成'alexsb'
print(l1[-1][1]) # 先找到小列表 # alex
new_str = l1[-1][1] + 'sb'
l1[-1][1] = new_str
print(l1) # [1, 2, 'taibai', [1, 'alexsb', 3, '老男孩教育']]
l1[-1][1] = l1[-1][1] + 'sb' # 简化形式
print(l1) # [1, 2, 'taibai', [1, 'alexsb', 3]]
# 另外一种简便方法, 回顾count = count + 1 -----> # count += 1
l1[-1][1] += 'sb'
print(l1) # [1, 2, 'taibai', [1, 'alexsb', 3]]
# 练习:
lis = [2, 30, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
# 将列表lis中的"tt"变成大写(用两种方式)
lis[3][2][1][0] = 'TT'
print(lis) # [2, 30, 'k', ['qwe', 20, ['k1', ['TT', 3, '1']], 89], 'ab', 'adv']
lis[3][2][1][0] = lis[3][2][1][0].upper()
print(lis) # [2, 30, 'k', ['qwe', 20, ['k1', ['TT', 3, '1']], 89], 'ab', 'adv']
四、元组 (了解)
-
只读列表。存大量的数据,可以索引,切片(步长), (100, '太白', True, [1, 2, 3])
-
tu = (100, '太白', True, [1, 2, 3]) print(tu[0]) # 100 print(tu[:3]) # (100, '太白', True) # 只能查看,不能增加删除 for i in tu: print(i) print(len(tu)) # 获取元素数据 # 4 tu[-1].append(666) # 元组里的列表,里的元素是可以改的 print(tu) # (100, '太白', True, [1, 2, 3, 666]) del tu[2] # 删除 True ----> 报错 print(tu) # 报错 # # 应用: # 应用一:重要数据,用户名,密码,个人信息,不想让别人改动的一些数据,存在元组中。 # 应用二:元组的拆包。分别赋值。 a, b = (1, 2) # 多一个少一个都不行 print(a,b) # 1 2 # a, b ,c= (1, 2) # 多一个少一个都不行 ---> 报错 # a, b = (1, 2, 3) # 多一个少一个都不行 ---> 报错 # 或者: c = (1,2) a,b = c print(a,b) # 1 2
五、range (了解)
- 类似于列表,自定制数字范围的
数字列表 - 多与
for结合使用
r = range(10) # 就像[0,1,2,3,4,5,6,7,8,9]列表的容器
# 顾头不顾腚
# 0 可以默认不写
print(r) # range(0, 10)
for i in r:
print(i) # 0 1 2 3 4 5 6 7 8 9 # 顾头不顾腚
# 索引(了解)
print(r[1]) # 1
for i in range(1, 101): # 打印1---100数
print(i) # 0 1 2 3....100 # 顾头不顾腚
for i in range(2,101,2): # 引入步长,打印偶数
print(i) # 2 4....100 # 顾头不顾腚
for i in range(100,0,-1): # 引入步长,打印偶数 (倒取)
print(i) # 100 99...1
# # 例如:
# 利用for循环,利用range将l1列表的所有索引依次打印出来
l1 = [1, 2, 3, 'alex', '太白']
# for i in range(5): # 和上面的l1无关,已经数出来了,元素多的数不过来呢?
for i in range(len(l1)):
print(i)
# 结果:
# 0
# 1
# 2
# 3
# 4
l1 = [1, 2, 3, 'alex', '太白']
for i in range(3): # 和上面的l1无关,已经数出来了
pass # range(3)是0~2, 顾头不顾腚
print(i) # 2

浙公网安备 33010602011771号