美文网首页
【06】列表

【06】列表

作者: Z_JoonGi | 来源:发表于2019-03-14 20:52 被阅读0次

1.什么时候用列表

需要用一个变量去同时保存多个数据

2.什么是列表(list)

  • 列表是python内置的容器型数据类型(序列), 可变(说明支持曾删改)并且有序(支持下标操作) 用中括号将多个元素括起来,多个元素之间用逗号隔开:
  • [元素1,元素2,元素3...]

3.列表中元素

  • python内置的数据类型对应的数据,或者是程序员自定义类型的数据都可以;
  • 不同元素的类型可以不一样
  • 注意: 赋值运算表达式不能作为列表元素,其他的都可以
list1 = [120, 12.9, True, 'abc', [1, 2, 3], {'a': 10}, lambda x: x*10]

4.查增删改

4.1查--获取元素

获取单个元素(和字符串一样): 列表[下标]

names = ['海贼王', '火影忍者', '死神', '犬夜叉', '妖精的尾巴', '熊出没', '一人之下']
# print(names[100])   # IndexError: list index out of range
print(names[-2])
  • 获取部分元素-切片(和字符串一样): 列表[开始下标:结束下标:步长]
  • 列表切片的结果是列表
print(names[1:4])    # ['火影忍者', '死神', '犬夜叉']
print(names[1:4:-1])     # []
print(names[::-1])    # ['一人之下', '熊出没', '妖精的尾巴', '犬夜叉', '死神', '火影忍者', '海贼王']
print(names[:])       # ['海贼王', '火影忍者', '死神', '犬夜叉', '妖精的尾巴', '熊出没', '一人之下']
print(names[::2])     # ['海贼王', '死神', '妖精的尾巴', '一人之下']
遍历
"""
a.直接遍历  
for 变量 in 列表:       # 变量取到的是元素
    循环体

b.通过下标遍历
for 变量 in range(len(列表)):      # 变量取到的是下标
    循环体
"""
for item in names:
    print(item)

for index in range(0, len(names), 2):
    print(index, names[index])

4.2增 --添加元素

1) 列表.append(元素)

在指定的列表的最后添加指定元素

persons = ['路飞', '宝儿姐', '张楚楠']
persons.append('容嬷嬷')
print(persons)
persons.append('赵云')
print(persons)
2) 列表.insert(下标,元素)

在指定列表的指定下标前插入指定元素

numbers = [1, 20, 34, 50]
numbers.insert(2, 22)
print(numbers)
numbers.insert(0, 1000)
print(numbers)

4.3 删 --删除元素

1) del 列表[下标]

将指定列表中指定下标对应的元素删除

names = ['海贼王', '火影忍者', '死神', '犬夜叉', '妖精的尾巴', '熊出没', '一人之下', '海贼王']
del names[2]
print(names)
2) 列表.remove(元素)

将指定列表中第一个指定元素删除

  • 注意:如果元素不存在,会报错
names.remove('海贼王')
print(names)
3)列表.pop()

移除列表中最后一个元素, 返回被移除的元素

列表.pop(下标)

移除列表中指定下标对应的元素, 返回被移除的元素

names = ['海贼王', '火影忍者', '死神', '犬夜叉', '妖精的尾巴', '熊出没', '一人之下', '海贼王']
del_name = names.pop()
print(names, del_name)

del_name = names.pop(1)
print(names, del_name)

# 需求: 删除所有的指定元素,例如:'海贼王'
# names = ['海贼王', '火影忍者', '海贼王','死神', '熊出没','犬夜叉', '妖精的尾巴', '熊出没', '一人之下', '海贼王']
# 要求: 用remove, 用del/pop

-注意:遍历用remove,即item时,有可能会少遍历;遍历用pop/del时,下标可能会超出

4) 清空: 列表.clear()

删除列表中所有的元素

names.clear()
print(names)

4.4 改 -修改列表元素

列表[下标] = 新值

将列表中指定下标对应的元素改成新值

nums = [1, 2, 3]
nums[0] = 100
print(nums)

5. in/not in

元素 in 列表

判断列表中是否包含指定的元素

print([1, 2] in [1, 2, 3, 4, [1, 2]])   # True
print([1, 2] in [1, 2, 3, 4])   # False
print(1 in [[1], 2, 3])   # False
print(1 in [1, 2, 3])    # True

6. 列表相关运算

1)数学运算: +, *
  • 列表1+列表2 - 将两个列表中的元素合并产生一个新的列表(原列表不会发生改变)
  • 列表*N - 列表中的元素重复N次产生新的列表
list1 = [1, 2, 3]
list2 = ['name', 'age']
new_list = list1 + list2
print(new_list, list1, list2)
print(list1*3)
list3 = [1]*100
print(list3)
2)比较运算: ==, !=
list4 = [1, 2]
print([1, 2] == [2, 1])  # False
print([1, 2] != [2, 1])  # True
print([1, 2] == list4)   # True
  • ‘>, <, >=, <= ’只支持相同位置上元素类型相同的两个列表 (了解)

7.内置函数

  • len(列表)、sum(列表) - 要求列表中的元素必须是数字、
  • max(列表)、min(列表)
  • list(数据) - 将指定数据转换成列表, 所有的序列都可以转换成列表,比如: 字符串,列表、字典、集合、元祖、range、迭代器、生成器等。 转换的时候是将序列中的元素作为列表元素

8.相关方法

1) 列表.count(元素)

获取指定元素在列表中出现的次数, 结果是整数

print([1, 2, 3, 1, 4].count(1))
2) 列表.extend(序列)

将序列中的元素添加到列表中, 结果None

list1 = []
list1.extend('abc')
print(list1)
list1.extend(range(3))
print(list1)
list1.extend(['张飞', '关羽', '赵云'])
print(list1)

list1.extend(['吕布'])
print(list1)
3)列表.index(元素)

获取指定元素在列表中的下标,如果这个元素有多个只获取第一个,如果元素不存在会报错

list2 = [1, 0, 1, 2, '张飞', '关羽', '赵云', '吕布']
print(list2.index('张飞'))
# print(list2.index('诸葛亮'))    # ValueError: '诸葛亮' is not in list
4)列表.reverse() - 将列表中的元素倒序, 不会产生新列表
list2.reverse()
print(list2)
  • 补充: 内置函数: reversed(序列)
    将序列中的元素倒序产生一个新的迭代器, 原序列不会修改
list1 = [1, 2, 3]
result = reversed('abc')
print(list(result))
print(list1)
5)列表.sort()

对列表中的元素从小到大排序(列表中的元素类型一致并且支持比较运算), 不会产生新的列表

  • 列表.sort(reverse=True)

从大到小排序

scores = [10, 100, 89, 20, 67, 34, 9]
# scores.sort()
# print(scores)      

scores.sort(reverse=True)
print(scores)
6)列表.copy()

产生一个新的列表,列表中的元素和原列表一样,相当于: 列表[:]

list1 = [1, 2, 3]
list2 = list1
list3 = list1.copy()
print(list2, list3)

list1.append(10)
print(list2, list3)

相关文章

网友评论

      本文标题:【06】列表

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