列表介绍
-
什么是列表?
我们去逛超市,首先会推一个小推车,想买什么东西了,直接把东西放在购物车里面,等选完之后就可以一起结账,带东西回家~
而这个车子就可以理解为列表,里面放的是各种各样的物品
也就是说,列表就是多个元素的集合,是一个容器!
- 购物车:一个列表
- 物品:列表内的元素
-
定义一个列表:
t_list = [1,"a"]
-
列表的循环遍历
>>> t_list = [1,"a"] >>> for i in t_list: ... print(i) ... print("类型是:"+ str(type(i))) ... 返回结果: 1 类型是:<class 'int'> a 类型是:<class 'str'>
也可以使用while循环
>>> t_list = [1,"a"] >>> i = 0 >>> while i < len(t_list): ... print(t_list[i]) ... i += 1 ... 返回结果: 1 a
-
列表的相关操作【增、改、查、删、排序】
-
增加元素【append、extend、insert】
- append【增加单个元素,添加一个列表】
>>> # 添加单个元素 >>> t_list = [1,"a"] >>> t_list.append('b') >>> t_list [1, 'a', 'b'] >>> # 添加一个列表 >>> t_list = [1, 'a', 'b'] >>> t3 = [3,"d"] # 定义一个新的列表t3 >>> t_list.append(t3) # 向列表t_list中添加另一个列表list2 >>> t_list [1, 'a', 'b', [3, 'd']]
- extend【将另一个列表中的元素逐一添加到当前列表中】
>>> t_list # 查看当前列表t_list的内容 [1, 'a', 'b'] >>> list2 = [2,'c'] >>> t_list.extend(list2) # 向列表t_list中添加另一个列表list2中的元素,返回一个新的列表 >>> t_list [1, 'a', 'b', 2, 'c'] >>>
- insert【insert(index,item)在指定位置index前插入元素item】
>>> t_list # 查看当前列表t_list的内容 [1, 'a', 'b', [3, 'd']] >>> t_list.insert(1,"item") # 在下标为1的位置a前面插入元素 item >>> t_list [1, 'item', 'a', 'b', [3, 'd']] >>>
- append【增加单个元素,添加一个列表】
-
修改元素【修改元素内容】
- 修改元素的时候,要通过下标来确定要修改的是哪个元素,然后才能进行修改
>>> t1 = ["我","爱","你"] # 定义一个列表t1 >>> t1 # 查看列表内的元素 ['我', '爱', '你'] # 修改“爱”,观察知道“爱”的下标为1 >>> t1[1] = "恨" >>> t1 # 修改后结果 ['我', '恨', '你'] >>>
-
查找元素【in、not in、(index、count,上一篇已经讲过就不再描述)】
所谓查找,就是看看指定的元素是否存在- in、not in
>>> t1 ['我', '恨', '你'] >>> str2 = '恨' >>> str3 = 'evile' ++++++++++++++++in代码展示+++++++++++++++++++ >>> if str2 in t1: ... print('字符存在!') ... else: ... print('str2不在t1列表时,我就出现') ... # 返回结果: 字符存在! ++++++++++++++++not in代码展示+++++++++++++++++++ >>> if str3 not in t1: ... print("str3不在列表t1中!") ... else: ... print("str3在列表t1中,我就会出现!") ... # 返回结果: str3不在列表t1中! >>>
-
删除元素【del、pop、remove、】
- del:根据下标删除
- remove:根据元素的值删除
- pop:删除最后一个元素
代码示例:
# del 删除元素 >>> list_2 = ["a","b","c","d","e"] >>> del list_2[2] >>> list_2 ['a', 'b', 'd', 'e'] # remove 删除元素 >>> list_2.remove("b") >>> list_2 ['a', 'd', 'e'] # pop 删除元素 >>> list_2.pop() 'e' >>> list_2 ['a', 'd']
从上面可以看到,最后的结果只剩下a和b两个元素。
-
排序 【sort、reverse】
- sort方法是将list按特定顺序重新排列,默认为由小到大,参数reverse=True可改为倒序,由大到小。
- reverse方法是将list逆置。
# sort 示例 >>> num = [2,1,3,4,9,5,7] >>> num.sort() >>> num [1, 2, 3, 4, 5, 7, 9] # sort中使用reverse方法,实现倒排序 >>> num = [2,1,3,4,9,5,7] >>> num.sort(reverse=True) >>> num [9, 7, 5, 4, 3, 2, 1] >>> # reverse 方法单独使用,实现列别反转 >>> num = [2,1,3,4,9,5,7] >>> num.reverse() >>> num [7, 5, 9, 4, 3, 1, 2] >>>
-
列表的嵌套
一个列表中的元素,可以是单个字符、数字,也可以是一个列表,那么这时候就说这是列表的嵌套。
list_1 = [ [a,b],[c,d],[e,f] ]
在程序中,列表内不仅可以是列表,也可以是元组,又可以是字典,还可以是单个的字符、数字等等。
在以后的工作中,我们会经常的遇到各种结构的数据
-
思考
有三个货架,每个货架上有4个位置可以放物品,现在有12种物品需要摆放进去,问怎么实现:随机摆放物品且均匀分配完所有物品
点击显示真代码
哈哈~~没想到吧,这里没有代码~
自己先思考吧,骚年~~
点击显示假代码
import random
import functools
list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
a2 = [[0 for col in range(3)] for row in range(4)]
a1 = [[], [], []]
#复制列表,就是为了到下面好删除,省去判断重复值这种麻烦事
tmp = list
#外层一维
for i in range(3):
#里层二维
for j in range(4):
#从某个列表具体的数中取值,每次取一个,返回是一个[3]这种形式的
val = random.sample(tmp,1)
#所以需要reduce函数把这个结果变成单纯的数字,map函数不好使
val1 = functools.reduce(int, val)
#追加进列表
a1[i].append(val1)
#追加进去的那个直接扔掉不要
tmp.remove(val1)
print(a1)
#最后删除空的这个tmp
del tmp
点击显示真假代码
list_1 = [[], [], []]
list_2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
for i in list_2:
index = random.randint(0, 2)
if (len(list_1[index]) < 4) :
list_1[index].append(i)
elif(len(list_1[index-1])<4):
list_1[index-1].append(i)
elif (len(list_1[index - 2])<4):
list_1[index - 2].append(i)
print(list_1)
总结
- 列表的定义【由一对中括号组成】
- 列表的操作【增删改查排序】
- 列表是可变类型