列表

列表

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
 ------------------------------

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容