美文网首页
第004篇:列表部分

第004篇:列表部分

作者: yydafx | 来源:发表于2019-11-08 18:44 被阅读0次

1、什么是列表(list)

列表:

  •  列表是python提供的一种容器型数据类型;以中括号作为容器的标志,里面的多个元素用逗号隔开:[元素1,元素2,元素3,元素4,....]。
  •  特点:
       列表是可变的(元素个数、值可变)支持增、删、改、查的操作
       列表是有序的支持下标操作

列表元素:

  •  列表中的元素可以是任何类型的数据;同一个列表中的元素的类型可以不一样。
list1 = ['张三',21.3, True, [1,4], {'name':'李白'}]
print(list1)

2、列表的基本操作(查增删改)

2.1、查

  • 获取列表中的元素
2.1.1、获取单个元素

语法:
 表示方式:列表[下标] -> 获取列表中指定下标对应的元素
说明:
 列表 --> 列表值,保存列表的变量,结果是列表的表达式。
 [] --> 固定写法
 下标 --> 元素在列表中的位置
 下标范围:
   0到列表长度-1 --> 从前往后依次增加(0表示第一个元素)
   -1到列表范围 --> 从后往前依次递减(-1表示最后一个元素)

list1 = ['张三',21.3, True, [1,4], {'name':'李白'}]
print(list1[4])     # 获取最后一个元素
print(list1[-1])    # 获取最后一个元素
2.1.2、获取部分元素(切片)
  • 列表切片的结果任然是列表
    语法:
     表示方式:列表[开始下标:结束下标:步长] --> 列表[M,N,step] ==>> 列表取前不取后
    注意:
      a、步长为正(+),从前往后取:开始下标的位置必须在结束下标的前面,否则会是个空列表[]
      b、步长为负(-),从后往前取:开始下标的位置必须在结束下标的后面,否则会是个空列表[]
list1 = ['张三',21.3, True, [1,4], {'name':'李白'}, 21]
print(list1[1:4:2])    # 以步长为2获取1到4(不包含4)对应的元素  -->  [{'name': '李白'}, [1, 4], True]
print(list1[4:1:-1])    # 以步长为2获取1到4(不包含4)对应的元素  -->  list1 = ['张三',21.3, True, [1,4], {'name':'李白'}, 21]
2.1.3、获取部分元素(切片)之省略下标和步长
  • a、省略步长:列表[开始下标:结束下标] --> 相当于步长为1
  • b、列表[:结束下标:步长] --> 步长为正,从第一个元素开始取;步长为负,从最后一个往前取
  • c、列表[开始下标::步长] --> 从该下标取到最后一个元素
  • d、列表[::步长] --> 步长为正,以步长为多少顺序输出,步长为负,以-步长为多少逆序输出
list1 = ['张三',21.3, True, [1,4], {'name':'李白'}, 21]
print(list1[:3:-1])    # 从后往前取 --> [21, {'name': '李白'}]
print(list1[3::-1])    # 从后往前取 --> [[1, 4], True, 21.3, '张三']
print(list1[::-1])  # 倒序输出  -->  [21, {'name': '李白'}, [1, 4], True, 21.3]
print(list1[::2])  # 顺序以步长为2输出  -->  ['张三', True, {'name': '李白'}]
print(list1[:])   #顺序输出 ['张三',21.3, True, [1,4], {'name':'李白'}, 21]
2.1.4、遍历

使用方式:for name in names

  • 将列表中的元素一个一个的取出来
  • 注意:下标切记不能越界
    越界报错 # IndexError: list index out of range 索引下标越界
    但是切片的时候允许越界
# 直接遍历获取元素:
movies = ['暮光之城','哪吒之魔童降世','速度与激情','肖生克的救赎','摔跤吧爸爸','斗罗大陆']
for movie in movies:
    print(movie)
# 通过遍历下标来遍历:
length = len(列表)
movies = ['暮光之城','哪吒之魔童降世','速度与激情','肖生克的救赎','摔跤吧爸爸','斗罗大陆']
length = len(movies)
# for index in range(-1, -length-1, -1):    # 逆序输出
for index in range(length):
    print(movies[index])

2.2、增

  • append:列表.append(元素) - 追加:在指定的列表末尾添加指定的元素
  • insert:列表.insert(下标,元素) 在指定的列表添加指定的元素到指定的位置前面
films = ['盗梦空间','一人之下','一拳超人','不良人','死亡笔记']
print(films)
films.append('斗罗大陆')
print(films)
films.insert(2, '秦时明月')
print(films)

2.3、删

  • del:del 列表[下标] -- 删除指定下标对应的元素(下标不可越界)
  • remove:列表.remove(元素) -- 删除指定的元素
    如果有多个元素只会删除第一个遇到的元素
    如果元素不存在会报错
  • pop:
    列表.pop() -- 默认取出列表中最后一个元素
    列表.pop(下标) -- 取出列表中指定下标对应的元素
films = ['盗梦空间','一人之下','一拳超人','不良人','死亡笔记']
print(films)

del films[2]
print(films)

films.remove('一人之下')
print(films)

a = films.pop()
b = films.pop(0)
print(a, b, films)
# 练习:删除下面这个列表中所有小于60的元素(一个小坑)
scores = [89, 45, 56, 20, 90, 78, 60, 23, 87, 20, 50]
'''
temp = scores[:]  等价于  scores[:]    复制粘贴一份
'''
for num in scores[:]:
    if num < 60:
        scores.remove(num)
print(scores)

2.4、改

  • 列表[下标] = 值 --> 将列表中指定下标对应元素修改成指定的值
num = [10, 2, 54, 56]
num[1] = 20
print(num)
# 练习:将scores中所有小于60的值的分数换成不及格
scores = [89, 45, 56, 20, 90, 78, 60, 23, 87, 20, 50]
for index in range(len(scores)):
    if scores[index] < 60:
        scores[index] = '不及格'
print(scores)

3、列表相关操作

 3.1、运算符

 3.1.1、运算符

a、数学运算: +, *

  • 列表1 + 列表2 --> 产生一个新的列表,新列表中的元素是两个列表元素的合并
list1 = [1, 2, 3]
list2 = ['张三', '李四']
print(list1 + list2)  # [1, 2, 3, '张三', '李四']
  • 列表 * N --> N个列表相加(合并),产生一个新的列表
list1 = [1, 2, 3]
print(list1 * 3)  # [1, 2, 3, 1, 2, 3, 1, 2, 3]

b、比较运算符:
  ==,!= 判断列表对应位置的值

list1 = ['a', 'b', 'c', ]
list2 = ['a', 'b', 'c', ]
list3 = ['a', 'c', 'b', ]
print(list1 == list2)  # True
print(list1 == list3)  # False

c、is
  变量1 is 变量2 --> 判断地址是否相等

li1 = [1, 2]
li2 = [1, 2]
print(li1 == li2)  # True
print(li1 is li2)  # False print(id(li1) is id(li2))

d、列表比较大小(>,<,>=,<=)

  • 依次对应位置的数据比较大小
print([1, 2, 3] > [2, 1])  # False
 3.1.2、in和not in
  • 元素 in 列表   # 判断列表中是否存在指定元素
  • 元素 not in 列表   # 判断列表中是否不存在指定元素
names = ['张三', '李四', '王二', '燕双鹰']
print('张三' in names)  # True
print('张三' not in names)  # False
 3.1.3、列表的相关函数(len、max、min、list、sum)

  len 获取序列的长度(元素的个数)
  用法:len(序列)

print(len([1, 2, 3]))   # 3

  max/min 获取序列中元素的最大值/最小值
  max(序列)/min(序列)
    a、序列中所有的元素的类型一致(数字看成是一种类型)
    b、元素本身支持比较大小

scores = [23, 78, 54, 34, 98, 12, 54]
print(max(scores))  # 98
print(min(scores))  # 12

  sum 求序列中所有元素的和
  sum(数字序列)

scores = [23, 78, 54, 34, 98, 12, 54]
print(sum(scores))  # 353

  list 将指定的数据转换为列表;数据必须是序列(所有的序列都可转为列表)

print(list((1,2,3,4,'a',['c'],'张三')))   # [1, 2, 3, 4, 'a', ['c'], '张三']
print(list(range(6, 10)))   # [6, 7, 8, 9]

4、列表相关方法

QQ图片20191111152324.png
 count,extend,index,reverse,clear,copy,sort,sorted,reversed

 count 将指定的数据转换为列表;数据必须是序列
 列表.count(元素)

names = ['墨子','狄仁杰','小乔','猴子','凯']
print(names.count('凯'))    # 1

 extend 将列表中的元素全部添加到列表中
 列表.extend(序列)

names = ['墨子','狄仁杰','小乔','猴子','凯']
names.append('老夫子')
print(names)
names.extend('鲁班')
print(names)
names.extend(['赵云','刘备'])
print(names)

 index 获取指定元素在列表中的下标
 列表.index(元素)
   a、如果元素不存在会报错
   b、如果元素有多个,获取第一个

nums = [1, 3, 4, 2, 3, 6, 10]
print(nums.index(3))    # 1
print(nums.index(6))    # 5

 reverse 将原来的列表倒序(反过来)
 列表.reverse()

nums = [1, 4, 5, 2]
nums.reverse()  # 在原来列表上改
print(nums)     # [2, 5, 4, 1]

nums = [1, 4, 5, 2]
new_nums = nums[::-1]   # 产生一个新的列表
print(nums, new_nums)   # [1, 4, 5, 2] [2, 5, 4, 1]

 clear 清空列表(清空列表一般使用clear,而不是直接赋值[])
 列表.clear()

nums = [1, 4, 5, 2]
nums.clear()    # 容器还在
print(nums)

nums = [1, 4, 5, 2]
nums = []       # 创造新的容器
print(nums)

 copy 复制列表中的元素,产生一个新的列表,将新列表的地址返回。赋值后,两个互不影响;和列表[:]的功能一模一样,都属于浅拷贝
 列表.copy()

nums = [1, 4, 5, 2]
new_nums = nums.copy()
new_nums.remove(1)
print(id(nums), id(new_nums))      # 44058024 44418152
print(nums)         # [1, 4, 5, 2]
print(new_nums)     # [4, 5, 2]

 sort 
   列表.sort()将列表中的元素从小到大排序(直接修改列表元素的数据,不会产生新的列表)
   列表.sort(reverse=True)将列表中的元素从大到小排序(直接修改列表元素的数据,不会产生新的列表)

nums = [1, 2,1,4,2,1,7,3,3]
nums.sort()
print(nums)     # [1, 1, 1, 2, 2, 3, 3, 4, 7]
nums.sort(reverse=True)
print(nums)     # [7, 4, 3, 3, 2, 2, 1, 1, 1]

 sorted 
 排序函数: sorted(序列)不修改原序列,排序后产生新的列表(升序)
 sorted(序列, reverse=True)不修改原序列,排序后产生新的列表(降序)

nums = [1, 2,1,4,2,1,7,3,3]
new_nums = sorted(nums)
print(new_nums)     # [1, 1, 1, 2, 2, 3, 3, 4, 7]

str1 = 'hello'
new_str1 = sorted(str1)
print(new_str1)     # ['e', 'h', 'l', 'l', 'o']

 sorted 将序列中的元素倒序,产生一个新的序列对应的迭代器
 reversed(序列)

nums = [1, 4, 5]
nums.reverse()
print(nums)

相关文章

  • 第004篇:列表部分

    1、什么是列表(list)  列表:  列表是python提供的一种容器型数据类型;以中括号作为容器的标志,里面的...

  • CALCULATE之庖丁解牛系列 - CALCULATE专解 (

    第39式 CALCULATE 的列表筛选(高级) 衔接上一部分第39式。参阅《DAX圣经》第10章,《扩...

  • 个人博客—换肤

    个人博客—换肤 点击换肤按钮 获取后台皮肤列表 点击皮肤列表中图片 换肤成功 html部分 js部分 php部分 ...

  • 第十课:使用列表的一部分

    预习: 切片、复制列表、、 知识点: 4.4 使用列表的一部分 切片:处理列表的部分元素; 4.4.1 切片 创建...

  • 前段学习笔记三

    html部分标签 列表标签:分为有序列表( )和无序列表( )和自定义列表( ) 表格标签t...

  • 今日所学

    列表查询 值 = 列表[index] 根据下标找值\ Index = 列表.index(值) 从列表中找出某个值第...

  • python-操作列表

    1.遍历列表:For循环 2.创建数字列表:range() 3.使用部分列表:切片,遍历,复制

  • 部分常用软件列表

    日常 7-Zip:https://www.7-zip.org/[https://www.7-zip.org/] N...

  • 8/8 学习内容

    上午三小时 学完列表部分,包括遍历列表、复制列表、切片、元组、设置代码格式等

  • Typora初试

    代码 有序列表 有序列表1 有序列表2 无序列表 无序列表1 无序列表2 表格 图片 引用 引用内容 换行 这是第...

网友评论

      本文标题:第004篇:列表部分

      本文链接:https://www.haomeiwen.com/subject/wzswbctx.html