第004篇:列表部分

2019-11-08  本文已影响0人  yydafx

1、什么是列表(list)

列表:

列表元素:

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、获取部分元素(切片)
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、获取部分元素(切片)之省略下标和步长
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

# 直接遍历获取元素:
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、增

films = ['盗梦空间','一人之下','一拳超人','不良人','死亡笔记']
print(films)
films.append('斗罗大陆')
print(films)
films.insert(2, '秦时明月')
print(films)

2.3、删

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、数学运算: +, *

list1 = [1, 2, 3]
list2 = ['张三', '李四']
print(list1 + list2)  # [1, 2, 3, '张三', '李四']
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
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)
上一篇 下一篇

猜你喜欢

热点阅读