列表操作
修改,添加和删除列表元素
-
添加
-
append(newElement)
将新元素添加到列表末尾,不会影响其他元素 -
insert(index, newElement)
在任意位置添加元素。需要指定索引和新值。
-
-
修改
list[index] = newElemet
-
删除
-
del list[index]
删除列表中某个位置的元素,但不会有返回值 -
pop()
删除并返回列表中最后一个元素。 -
pop(index)
删除并返回列表中某个位置的元素 -
remove(element)
根据某个值删除元素,如果值有重复,则只会删除第一个被找到的值。
-
# 所有tank的编号
total_tanks = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
# 存活的tank
live_tanks = [1, 2, 3]
# 击中的坦克编号
hit_tanks = []
print("坦克大战开始了。。。。。")
print(total_tanks)
print(live_tanks)
print(hit_tanks)
print("first blood")
hit_tanks.append(live_tanks[1])
live_tanks[1] = 4
print(live_tanks)
print(hit_tanks)
print("double kill")
hit_tanks.insert(0, live_tanks[0])
live_tanks[0] = 5
print(live_tanks)
print(hit_tanks)
print("假设只剩下最后三辆坦克了")
live_tanks = [8, 9, 10]
hit_tanks = [1, 2, 3, 4, 5, 6, 7, 11, 12]
print(live_tanks)
print(hit_tanks)
print("kill 9")
nine = live_tanks.pop(1)
hit_tanks.insert(7, nine)
print(live_tanks)
print(hit_tanks)
print("只剩下最后两辆坦克了")
print("kill 10")
ten = live_tanks.pop()
hit_tanks.insert(8, ten);
print(live_tanks)
print(hit_tanks)
print("只剩下最后一辆坦克了")
print("kill 8")
eight = live_tanks[0]
del live_tanks[0]
hit_tanks.insert(7, eight);
print(live_tanks)
print(hit_tanks)
列表排序
-
sort
永久排序 -
sorted()
临时排序
list = [2, 4, 5, 3, 7, 6]
print("sort before: ")
print(list)
list.sort()
print("sort after: ")
print(list)
print("reverse sort after: ")
list.sort(reverse=True)
print(list)
list = [2, 4, 5, 3, 7, 6]
print("sorted before: ")
print(list)
new_list = sorted(list) ## 序列通用的函数
print("sorted after: ")
print("temp_list: ")
print(new_list)
print(list)
列表反转
list = [2, 4, 5, 3, 7, 6]
list.reverse() # 永久反转
print(list)
列表的赋值
a = [1, 2, 3, 4] # ①
b = a # ②
b[1] = 100 # ③
print(a[1]) # 100
执行语句a = [1, 2, 3, 4]
内存分布图
执行语句b = a
的内存分布图
可以发现,
a b
两个变量指向同一个objects
所以如果执行了b[1] = 100
,修改的是同一个objects
,所以a[1] = 100
a = [1, 2, 3, 4]
b = a[:]
b[1] = 100
print(a[1]) # 2
执行语句a = [1, 2, 3, 4]
内存分布图
执行语句b = a[:]
的内存分布图
执行了a[:]是一个新的list,所以修改了b[1] = 100
,修改的不是同一个objects
,所以a[1] = 2
def swap(lst, start, end):
tmp = lst[start]
lst[start] = lst[end]
lst[end] = tmp
x = [10, 20, 30]
swap(x, 0, 1)
print(x)
嵌套列表
stu = [['zhangsan', 15], ['lisi', 16], ['wangwu', 15], ['zhaoliu', 15]]
print(len(stu))
print(len(stu[0]))
列表解析或推导(List comprehension)
-
生成值为
1~9
的平方的列表方法一:
a = [] for x in range(1, 9): a.append(x ** 2) print(a)
方法二:([表达式 for 变量 in 列表 if 条件])
a = [x ** 2 for x in range(1, 9)] print(a)