列表, range, 元组
-
str: 存储少量的数据
-
str: 切片还是对其进行任何操作, 获取的内容都是str类型, 存储的数据单一
-
-
list
-
l1 = [100, 'jack',True,[1, 2, 3]] 承载任意数据类型, 存储大量的数据
-
python常用的容器数据类型, list列表, 其他语言: java : 数组
-
列表是有序的, 可索引, 切片(步长)
-
-
列表的创建
# 列表的创建
# 方式一
# li = ['hh', 12]
# 方式二
# li = list() # 默认是个空列表
# li = list("啥地方加拉卡珊德拉返回来水立方") # 默认""里面的每一个字符都是列表的元素,添加到li列表中
# print(li)
# 方式三 列表推导式
-
索引, 切片, 步长
# li = ['悟空', 123, True, [1, 2, '八戒']]
# print(li[1])
# print(type(li[1]))
# print(li[-1][-1:-3:-1])
# print(li[1:3])
# print(li[-2:0:-1])
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:-1:2]
l5 = li[1:-2:2]
print(l4)
print(l5)
# 通过对li列表的切片形成新的列表l6,l6 = ["b","a",3]
l6 = li[-3::-2]
print(l6)
-
列表的增删改查
# 增加 append 追加
# li = ['悟空', 123, True, [1, 2, '八戒']]
# li.append('白骨精') 不能打印它, 它只是执行的过程, 返回结果是None
# print(li)
# li = ['玉帝', '公祖', '观音', '八戒']
# while 1:
# con = input("请输入姓名:(按Q或者q退出)")
# if con.upper() == 'Q':
# break
# else:
# li.append(con) # append只能追加到列表的最后
#
# print(li)
# 插入 insert
# li = ['玉帝', '公祖', '观音', '八戒']
# li.insert(1, '和尚') # 也是没有返回值的, 指定索引添加
# print(li)
# extend 迭代着追加 里面的内容必须是可迭代的, 字符串, 列表, 元祖, 字典(只存储字典的key, value的值是追加不进去的)
# li = ['玉帝', '公祖', '观音', '八戒']
# # li.extend("123ads")
# # li.extend(('alex', 3, 6))
# # li.extend(['alex', 3, 6])
# li.extend({'name': "付举鹏", 'age': 18})
# print(li)
# 删除 pop 按照索引位置删除, 默认删除最后一个元素
# li = ['玉帝', '公祖', '观音', '八戒']
# print(li.pop()) # 默认删除的是最后一位元素, 返回值是删除的元素
# print(li)
# li.pop(0) # 指定索引删除
# print(li)
# 删除 remove 必须指定元素进行删除, 如果遇到重名了, 从左到右, 删除第一个
# li = ['玉帝', '公祖', '八戒', '观音', '八戒']
# li.remove('八戒')
# print(li)
# 清空 clear() 清空列表
# 删除 del 按照索引删除, 可以指定切片步长删除
# li = ['玉帝', '公祖', '八戒', '观音', '八戒']
# # del li[0]
# del li[::2]
# print(li)
# 改 可以通过索引改值
li = ['玉帝', '公祖', '八戒', '观音', '八戒']
# li[0] = '佛祖' 索引改
# print(li)
# li[::2] = '哈哈哈' # 改几个值就写几个值, 否则报错
li[2:] = "adsf" # 切片改
print(li)
# 查 for 循环
for i in li:
print(i)
-
列表的嵌套
# l1 = [1, 2, 'tai', [1, 'alex', 3, ]]
# 1, 将l1中的'taibai'变成大写并放回原处。
# l1[2] = l1[2].upper()
# print(l1)
# 2,给小列表[1,'jack',3,]追加一个元素,'教育'。
# l1 = [1, 2, 'tai', [1, 'jack', 3, ]]
# l1[-1].append('教育')
# print(l1)
l1 = [1, 2, 'tai', [1, 'jack', 3, ]]
# 3,将列表中的'alex'通过字符串拼接的方式在列表中变成'alexsb'
l1[-1][1] += 'sb'
print(l1)
-
元组
tu = (123, 'asb', True, [1, 'W'])
# 元组是可读列表, 不能增删改 但是里面包含的列表是可以改的
print(len(tu))
print(tu[0]) # 可以通过索引拿值
# 查, for循环
for i in tu:
print(i)
tu[-1].append('666')
print(tu)
# 应用
# 重要的数据, 用户名, 密码, 个人信息, 不想让别人改动的数据, 存在元组中
# 元组的拆包, 分别赋值
a, b = (1, 2) # 多一个少一个都不行
print(a, b)
-
range
vari = range(0, 10)
# print(vari[-1])
# 反向的时候一定要加反向步长
# for i in range(100, 0, -1):
# print(i)
# 反向打印100到0的偶数
# for i in range(100, 1, -2):
# print(i)
# 打印100以内的偶数
# for i in range(2, 101, 2):
# print(i)
# 正向答应0-100中的奇数
# for i in range(1, 101, 2):
# print(i)
# 反向打印100-0中的奇数
# for i in range(99, -1, -2):
# print(i)
l1 = [1, 2, 3, 'jack', '悟空', 2, 3, 4, 66]
# 利用for循环,利用range将l1列表的所有索引依次打印出来
for i in range(len(l1)):
print(i)
# 队列:FIFO(first in first out) 先进先出
# 入队操作演示
l = []
l.append('first')
l.append('second')
l.append('third')
print(l)
# 出队操作演示
# print(l.pop(0))
# print(l.pop(0))
# print(l.pop(0))
# 堆栈 : LIFO(last in first out) 后进先出
# l = []
# 入栈操作
# l.append('first')
# l.append('second')
# l.append('third')
#
# print(l)
# # 出队操作
# print(l.pop())
# print(l.pop())
# print(l.pop())