Python游戏世界打怪升级之新手指引六【列表】
Python列表
什么是列表
列表是一个可变序列,通常用于存放同类项目的集合;
列表的表达方式
- 使用方括号表示空列表[ ]
- 使用方括号,其中以逗号分隔,[a],[a,b,c]
- 使用列表推导式[x for x in iterable]
- 使用构造器list(),list(iterable);
下面就依次演示下列表的用法
list_1 = []
list_2 = [1, 2, 3, 4, 5, 6]
list_3 = [x for x in range(10)]
构造器讲构造出一个列表,其中的值与iterable中的值具有相同的值、顺序;
iterable,可以是序列、支持迭代的容器、或者是其他可迭代象;
如果 iterable 已经是一个列表,将创建并返回其副本,类似于 iterable[:],可以看到他们的id是不一样的
set_a = (43, 21, 56, 87)
list_4 = list(set_a)
str_a = "hello world"
list_5 = list(str_a)
print(list_1) # []
print(list_2) # [1, 2, 3, 4, 5, 6]
print(list_3) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list_4) # [43, 21, 56, 87]
print(type(list_4)) # <class 'list'>
print(list_5) # ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
print(type(list_5)) # <class 'list'>
list_a = [5,3,4]
list_b = list(list_a)
print(list_b) # [5, 3, 4]
print(type(list_b)) # <class 'list'>
print(id(list_a)) # 2722164739584
print(id(list_b)) # 2722197176064
好了,列表的方式讲完了,下面要讲一下列表的一些用法了;如果你在pycharm里面.以下,会发现列表有不少方法,这里就简单介绍几个,详细的需要自己去查阅
list_a = [34, 54, 123, 766, 1, 34, 7, 3, 9]
list_b = [100, 2, 2, 100]
# in,not in ;判断值在不在列表里
print(1 in list_a) # True
print(1 not in list_a) # Fales
# +;两个列表进行拼接
print(list_a + list_b) # [34, 54, 123, 766, 1, 34, 7, 3, 9, 100, 2]
# list * n,相当于列表自身进行n次拼接
print(list_b * 2) # [100, 2, 100, 2]
# len(),长度,和字符串一样的用法
print(len(list_a)) # 9
# min()。列表里面的最小项
print(min(list_a)) # 1
# max(),列表里面的最大项
print(max(list_a)) # 766
# count(x),统计x再列表中出现的总次数
print(list_b.count(100)) # 2
# s.index(x,i,j),x 在 s 中首次出现项的索引号(索引号在 i 或其后且在 j 之前)
print(list_b.index(2)) # 1
# 索引和切片
# 没错,列表和字符串一样也支持索引和切片;这里就不在详细描述了
print(list_a[4]) # 1
print(list_a[-2]) # 3
print(list_a[3:6]) # [766, 1, 34]
print(list_a[:3]) # [34, 54, 123]
print(list_a[::2]) # [34, 123, 1, 7, 9]
# s[i] = x;把列表的第i项的值,替换为x
list_b[0] = 1
print(list_b) # [1, 2]
# s[i:j] = t,把列表的i:j的切片,替换为可迭代对象t的内容
print(list_a[1:4]) # [54, 123, 766]
list_a[1:4] = ['a', 'b', 'c', 'd', 'e']
print(list_a) # [34, 'a', 'b', 'c', 'd', 'e', 1, 34, 7, 3, 9]
# list_a[:] = []
# print(list_a) # []
# append(x),x添加到序列的末尾
list_b.append('hello')
print(list_b) # [1, 2, 'hello']
# insert(i,x),再i给出的索引位置将x插入到列表
list_b.insert(0, 'hello')
print(list_b) # ['hello', 1, 2, 'hello']
# del s[i:j],等同于s[i:j] = []
del list_a[1:4]
print(list_a) # [34, 'd', 'e', 1, 34, 7, 3, 9]
# clear(),从列表中移除所有值,等同于 del s[:])
list_a.clear()
print(list_a) # []
# extend(),s+=t;用t的内容给s扩展
extend_a = [3, 2, 1]
list_c = [4, 5, 6]
list_c.extend(extend_a)
print(list_c) # [4, 5, 6, 3, 2, 1]
# pop()\pop(i);提取在i位置的值,并将其移除
list_c.pop(-1)
print(list_c) # [4, 5, 6, 3, 2]
extend_a.pop() # 如果不填写索引的话,会依次删除最后一项
print(extend_a) # [3, 2]
# remove(x),从列表中移除第一个s[i] = x的值
list_remove = [1, 4, 6, 2, 8, 2, 0]
list_remove.remove(2)
print(list_remove) # [1, 4, 6, 8, 2, 0]
# reverse(),反转列表
list_remove.reverse()
print(list_remove) # [0, 2, 8, 6, 4, 1]
# sort(*, key=None, reverse=False);
# 此方法会对列表进行原地排序,只使用 < 来进行各项间比较
# reverse=True,为降序
list_remove.sort()
print(list_remove) # [0, 1, 2, 4, 6, 8]
list_remove.sort(reverse=True)
print(list_remove) # [8, 6, 4, 2, 1, 0]
# copy()。创建列表的浅拷贝,等同于 s[:]
list_bb = list_b.copy()
print(list_bb) # ['hello', 1, 2, 'hello']
print(id(list_bb)) # 1902990320000
print(id(list_b)) # 1902986552448
# 这个时候我们修改list_b列表,会发现bb列表没有跟着改变
list_b.append('world')
print(list_b) # ['hello', 1, 2, 'hello', 'world']
print(list_bb) # ['hello', 1, 2, 'hello']

浙公网安备 33010602011771号