返回顶部

列表, range, 元组

1.列表的初始

  • 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())
 

 

posted @ 2022-07-20 16:12  fuju  阅读(45)  评论(0)    收藏  举报