Day7 总结

2018-11-13  本文已影响0人  312d026ea2dd

一.列表的相关方法

1.列表赋值
"""
a.直接使用一个列表变量给另一个列表变量赋值,赋的是地址。
赋完值之后,对其中一个列表进行增删改,会影响另一个列表
b.如果赋值的时候赋的列表的切片或者拷贝,会产生新的地址,然后使用新的地址赋值。
赋完值之后,两个列表相互之间不影响
"""

# 现象1:
list1 = [1, 2, 3]
list2 = list1
list2.append(100)
print(list1)   # [1, 2, 3, 100]
list1 = [1, 2, 3]
list2.append(200)
print(list1)
# 现象2:
list1 = [1, 2, 3]
list2 = list1[:]
list2.append(100)
print(list1)   # [1, 2, 3]

2.列表中的方法

"""
1.列表.count(元素) - 获取指定元素在列表中出现的次数

numbers = [100, 34, 90, 89, 100, 7, 100, 18]
print(numbers.count(100))

2.列表.extend(序列) - 将序列中所有的元素都添加到列表中

numbers.extend(['abc', 'hello'])
print(numbers)
numbers.extend('world')
print(numbers)
numbers.extend(range(11, 15))
print(numbers)

3.列表.index(元素) - 获取指定元素的下标

注意:a.如果元素有多个,只去第一个的下标
b.如果这个元素不存在,会报错(ValueError)

numbers = [3, 1, 2, 3, 4, 5, 3]
print(numbers.index(3))   # 0
# print(numbers.index(33))  # ValueError: 33 is not in list

4.列表.reverse() - 反向列表(将列表元素倒序)

numbers = [19, 89, 2, 8, 98, 10, 32]
numbers.reverse()
print(numbers)

5.列表.sort() - 对列表进行升序排序(从小到大)
列表.sort(reverse=True) - 对列表进行降序排序(从大到小)

注意:列表的要求:a.列表的元素类型必须一样 b.元素支持比较运算符

numbers = [19, 89, 2, 8, 98, 10, 32]
numbers.sort()
print(numbers)

numbers = [19, 89, 2, 8, 98, 10, 32]
numbers.sort(reverse=True)
print(numbers)

names = ['路飞', '娜美', '山治', '罗宾', '弗兰克', '乔巴', '佐罗']
names.sort()
print(names)

6.列表.clear() - 清空列表

names = ['路飞', '娜美', '山治', '罗宾', '弗兰克', '乔巴', '佐罗']
names.clear()
print(names)

# 注意: 清空列表尽量使用clear()
# names = ['路飞', '娜美', '山治', '罗宾', '弗兰克', '乔巴', '佐罗']
# names = []
# print(names)

7.列表.copy() - 将列表中元素直接赋值一份产生一个新的列表。和列表[:]效果一样
注意: 这儿的拷贝是浅拷贝

list1 = [1, 2, 3]
list2 = list1.copy()
print(list2)
print(list1 is list2)   # False

二.浅拷贝和深拷贝的应用

import copy
"""
copy.copy(对象)  - 浅拷贝 (直接拷贝元素的值产生一个新的地址)
copy.deepcopy(对象) - 深拷贝(不会直接复制地址,而是将地址对应的值拷贝一份产生新的地址)
numbers1 = [1, 2, 3]
numbers2 = [10, 20, 30]
list1 = [numbers1, numbers2]

print('1.浅拷贝:')
list2 = list1.copy()
print('修改前list1:', list1)
print('修改前list2:', list2)
print('针对list1进行修改')
list1.append(111)
list1[0].append(100)
print('修改后list1:', list1)
print('修改后list2:', list2)


numbers1 = [1, 2, 3]
numbers2 = [10, 20, 30]
list1 = [numbers1, numbers2]
print('2.深拷贝')
list2 = copy.deepcopy(list1)
print('修改前list1:', list1)
print('修改前list2:', list2)
print('针对list1进行修改')
list1.append(111)
list1[0].append(100)
print('修改后list1:', list1)
print('修改后list2:', list2)
上一篇 下一篇

猜你喜欢

热点阅读