列表
list 可以存储不同数据类型的数据
name_list = ['鲁班', 'xiaoming', 1024]
name_list
['鲁班', 'xiaoming', 1024]
type(name_list)
list
# 访问
name_list[0]
'鲁班'
# 遍历
for name in name_list:
print(name)
鲁班
xiaoming
1024
i = 0
while i < len(name_list):
print(name_list[i])
i += 1
鲁班
xiaoming
1024
列表的相关操作
# 查看列表的方法
print(dir([]))
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
<1> 添加操作
append()
在指定位置后插入
str = input('请输入你想添加的内容:')
name_list.append(str)
print('添加后:',name_list)
请输入你想添加的内容: 小丽
添加后: ['鲁班', 'xiaoming', 1024, '小丽']
list1 = []
for i in range(10):
list1.append(i)
print(list1)
[0]
[0, 1]
[0, 1, 2]
[0, 1, 2, 3]
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4, 5]
[0, 1, 2, 3, 4, 5, 6]
[0, 1, 2, 3, 4, 5, 6, 7]
[0, 1, 2, 3, 4, 5, 6, 7, 8]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
insert()
在指定位置 index 前插入元素 object
a = [0,1,2]
a.insert(1,10) # (位置索引,对象)
a
[0, 10, 1, 2]
extend()
将另外一个集合逐一的添加到列表中
a = [1, 2]
b = [3, 4]
a.extend(b)
print(a)
[1, 2, 3, 4]
a.append(b)
a
[1, 2, 3, 4, [3, 4]]
<2> 修改操作
name_list[1] = '小明'
name_list
['鲁班', '小明', 1024, '小丽']
<3> 查询操作
根据内容查询
find_name = '小明'
if find_name in name_list:
print('小明在!')
else:
print('buzai')
小明在!
根据索引查询
# index()查找元素第一次出现的位置
a = ['a', 'b', 'c', 'a', 'b']
index = a.index('c',1, 3) # [1,3) 内查找
index
2
根据内容查询出现的次数
a.count('b')
2
<4> 删除操作
del 根据下标删除
pop 删除最后一个元素
remove 根据元素值进行删除
name_list = ['鲁班', 'xiaoming', 1024]
print('删除前:', name_list)
del name_list[0]
print('删除后:', name_list)
删除前: ['鲁班', 'xiaoming', 1024]
删除后: ['xiaoming', 1024]
name_list = ['鲁班', 'xiaoming', 1024]
print('删除前:', name_list)
name_list.pop()
print('删除后:', name_list)
删除前: ['鲁班', 'xiaoming', 1024]
删除后: ['鲁班', 'xiaoming']
当 pop 指定索引后也可以指定位置删除。
name_list = ['鲁班', 'xiaoming', 1024]
print('删除前:', name_list)
name_list.pop(-2)
print('删除后:', name_list)
删除前: ['鲁班', 'xiaoming', 1024]
删除后: ['鲁班', 1024]
name_list = ['鲁班', 'xiaoming', 1024]
print('删除前:', name_list)
name_list.remove('xiaoming')
print('删除后:', name_list)
删除前: ['鲁班', 'xiaoming', 1024]
删除后: ['鲁班', 1024]
列表的排序
from random import randint
num = randint(-10, 10) # 生成 [10,10] 范围内的随机数
num_list = []
for _ in range(10):
num_list.append(randint(1, 20))
print(num_list)
[20, 8, 2, 8, 6, 18, 16, 1, 20, 15]
num_list.sort()
print(num_list)
num_list.sort(reverse = True) # 逆序排序
print(num_list)
[1, 2, 6, 8, 8, 15, 16, 18, 20, 20]
[20, 20, 18, 16, 15, 8, 8, 6, 2, 1]
kk = sorted(num_list)
print(kk)
print(num_list)
num_list.sort()
print(num_list)
# 区别
# .sort() 对原来的列表进行修改排序
# sorted(num_list)对原来的没有改变
# .sort() 是列表的成员方法
# sorted 可以对所有可迭代对象进行操作
# ls.sort() sorted(ls) 调用方式不同
[1, 2, 6, 8, 8, 15, 16, 18, 20, 20]
[20, 20, 18, 16, 15, 8, 8, 6, 2, 1]
[1, 2, 6, 8, 8, 15, 16, 18, 20, 20]
列表的嵌套
列表的列表
school_name = [['清华', '北大'],['南开', '天大'],['东秦', '燕山']]
school_name
[['清华', '北大'], ['南开', '天大'], ['东秦', '燕山']]
print(school_name[0][1])
# numpy中可以 school_name[0, 1] 访问
北大
列表推导式
列表推导式就是指 使用轻量级循环创建列表
list1 = []
for i in range(10):
list1.append(i)
print(list1)
list2 = [i for i in range(10)]
print(list2)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
list3 = [i for i in range(2, 17, 2)]
list3
[2, 4, 6, 8, 10, 12, 14, 16]
list1 = []
for _ in range(10):
list1.append('不给我鲁班我就送')
print(list1)
list4 = ["不给我鲁班我就送" for _ in range(10)]
print(list4)
['不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送']
['不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送', '不给我鲁班我就送']
from random import randint
l = [randint(-10,10) for _ in range(10)] # 生成 10 个元素,范围在【-10,10】区间的列表
print('原列表:', l)
# 选出大于等于 0 的数据
res = []
for x in l:
if x>= 0:
res.append(x)
print("使用for循环筛选:", res)
# 循环的过程中使用 if
res2 = [x for x in l if x >= 0]
print("使用列表推导式删选:", res2)
原列表: [-2, 9, -9, -1, 3, 2, -2, -5, -2, -7]
使用for循环筛选: [9, 3, 2]
使用列表推导式删选: [9, 3, 2]
列表与字符串
my_list = ['welcome', 'to', 'Ml', 'world']
my_list_to_str = str(my_list) # 效果不好
print(my_list_to_str)
print(' '.join(my_list))
print('_'.join(my_list))
['welcome', 'to', 'Ml', 'world']
welcome to Ml world
welcome_to_Ml_world
# 列表和字符串的 *
str1 = 'hehe'*3
print(str1)
list4 = ['6', 9, 0]*5
print(list4)
hehehehehehe
['6', 9, 0, '6', 9, 0, '6', 9, 0, '6', 9, 0, '6', 9, 0]
# 练习
numbers = [i for i in range(11)]
print(numbers)
# 筛选出偶数的数据
numbers2 = []
for number in numbers:
if number%2 == 0:
numbers2.append(number)
print(numbers2)
number3 = [number for number in numbers if number%2 == 0]
print(number3)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[0, 2, 4, 6, 8, 10]
[0, 2, 4, 6, 8, 10]
# 练习2
# 一个学校有三个办公室,有八个老师随机分派 完成随机分派
import string
# import random.randint as randint
from random import randint
# 定义办公室
offices = [[],[],[]]
# 定义老师
names = list(string.ascii_uppercase[:8])
print(names)
for name in names:
# 产生一个随机数[0,2]
index = randint(0,2)
offices[index].append(name)
print(offices)
i = 1
for tempNames in offices:
print('办公室{}的中的人数为{}'.format(i,len(tempNames)))
i += 1
print('成员为:')
for name in tempNames:
print('{}'.format(name),end = '')
print('\n','-'*30)
['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
[['F'], ['A', 'B'], ['C', 'D', 'E', 'G', 'H']]
办公室1的中的人数为1
成员为:
F
------------------------------
办公室2的中的人数为2
成员为:
AB
------------------------------
办公室3的中的人数为5
成员为:
CDEGH
------------------------------
网友评论