Python中列表的相关操作 列表推导式、求列表长度、列表的下标与切片、列表的增删改查,求最大数、最小数和求和、列表的带下标的遍历、冒泡排序

1.求列表的长度

len() 函数返回列表的长度,就不演示了

2.列表的下标与切片 改查

列表也能根据下标查找数据,也能根据切片找到相应长度的内容,具体见字符串常见操作,但不同于字符串的是,列表还可以根据下标和切片修改本身的数据,请看下面的演示:

name1 = ['张三', '李四', '马武', '帅哥']
name1[1] = 1
print(name1) # ['张三', 1, '马武', '帅哥']
# name1[1] = 1,2,2 # 如果是像这样的用逗号连起来的多个数据,则会把这几个数据拼成一个元组
# print(name1) # ['张三', (1, 2, 2), '马武', '帅哥']

上面是根据下标修改数据,下边是根据切片来修改,切片修改数据,就是把切的那段内容换成所给的内容,这里可以给的内容有(列表,元组,集合(只添加key值),range(),单个数据要加逗号),所以说切片也可以用来给列表添加数据,切片赋值和那个列表的extend方法有点相似
注意name1[n:n]这样是取不到数据的,取到的只是一个空列表,这样就可以使用这种切片方式在一个位置添加一个或多个数据

# 是一句一句执行的,就不一一打印了
name1 = ['张三', '李四', '马武', '帅哥']
# name1[1:3] = range(5) ['张三', 0, 1, 2, 3, 4, '帅哥']
# name1[1:3] = (1,2,3) # ['张三', 1, 2, 3, '帅哥']
# name1[1:3] = [1,2,3,4] # ['张三', 1, 2, 3, 4, '帅哥']
# name1[1:3] = 1, # ['张三', 1, '帅哥']
# name1[1:3] = {'name':'zhangsan','age':18} # ['张三', 'name', 'age', '帅哥']
print(name1)

3.列表的增删查

index和字符串的index方法一样,具体见字符串常见操作,匹配到就返回对应的下标,没有就会报错,这里就不演示了;
append insert extend
append(object):在列表的末尾添加一个数据,这个数据可以是列表、元组、字典、单个元素等等都行;
insert(index,object):在指定位置添加数据可添加的数据和append一样;
extend(iterable):在列表的末尾拼接可迭代对象,列表,元组,集合(只添加key值),range()等等;

hero = ['后裔', '鲁班', '孙尚香', '百里守约', '伽罗']
hero.append(1)  # 在列表的末尾加入1
print(hero) # ['后裔', '鲁班', '孙尚香', '百里守约', '伽罗', 1]

hero.insert(0,2) # 在下标为0处插入2
print(hero) # [2, '后裔', '鲁班', '孙尚香', '百里守约', '伽罗', 1]

# 下面也是一条一条执行的,添加列表的我就不演示了
# hero.extend({'name':'zhangsan','age':18}) # [2, '后裔', '鲁班', '孙尚香', '百里守约', '伽罗', 1, 'name', 'age']
# hero.extend(('a','b','c')) # [2, '后裔', '鲁班', '孙尚香', '百里守约', '伽罗', 1, 'a', 'b', 'c']
# hero.extend(range(2)) # [2, '后裔', '鲁班', '孙尚香', '百里守约', '伽罗', 1, 0, 1]
print(hero)

删:pop remove clear
pop(index):不添加参数index时,默认是删除最后一个数据,加入的话就是根据你所加入的下标来删除数据,删除的数据是这个方法的返回值;
remove(object):删除列表中原有的一个数据,要删除的内容必须是原列表就有的,否者就会报错;
clear():清空列表;
也可以使用del 删除

fashi = ['小乔', '貂蝉', '张良', '干将', '妲己']
a = fashi.pop(0)  # pop默认删除最后一个数据,并且返回这个数据,还可以根据下标删除数据
print(fashi)# ['貂蝉', '张良', '干将', '妲己']
print(a)# '小乔'

b = fashi.remove('干将')
print(fashi) ['貂蝉', '张良', '妲己']
# fashi.remove('大桥') # 如果列表里面没有这个数据,就会报错 ValueError: list.remove(x): x not in list

fashi.clear()
print(fashi) # []

nums = [1,2,1,3,4,1,2]
del nums[0]
print(nums)# [2, 1, 3, 4, 1, 2]
del nums[3:]
print(nums)# [2, 1, 3]

4.求列表的最大数和最小数,对列表求和

max()求最大数、min()求最小数,sum()对列表求和
求最大值最小值需要保证列表内数据类型一致,sum求和好像只支持数字类型,大家可以去试一试,我试了一下字符串是不行的

num = [0, 1, 2, 3, 4, 5, 6, 7, 8, 5, 4]
print(max(num))# 8
print(min(num))# 0
print(sum(num))# 45

5.列表的遍历

列表的遍历我就只演示一种了,那就是带下标的遍历

killers = ['李白', '韩信', '猴子', '橘右京', '娜可露露']
for x,y in enumerate(killers):
    print(x,y)
# 0 李白
# 1 韩信
# 2 猴子
# 3 橘右京
# 4 娜可露露

扩展:count sort reverse等方法

count:我也就不说了,使用方法和字符串的count一样具体见字符串常见操作
sort:对列表就行排序,默认是升序,可修改参数reverse=True来变为降序;
reverse:对列表进行反转

nums = [5, 3, 1, 6, 7, 8, 4, 2]
nums.sort()
print(nums) # [1, 2, 3, 4, 5, 6, 7, 8]
nums.reverse() 
print(nums) # [8, 7, 6, 5, 4, 3, 2, 1]

冒泡排序

num = [6, 5, 3, 1, 8, 7, 2, 4]
b = 0
count = 0 # 统计排序的次数
while b < len(num) - 1:
    flag = True
    a = 0
    while a < len(num) - 1 -b:
        count += 1
        if num[a] > num[a + 1]:# 前一个比后一个大,就交换两个位置
            flag = False # 只要进行了一次换位,下面的if语句就不会执行
            num[a], num[a + 1] = num[a + 1], num[a]
        a += 1
    if flag:# 
        break
    b +=1
print(num)# [1, 2, 3, 4, 5, 6, 7, 8]
print(count)# 27

希望对您有所帮助
点赞你不迷路
嘿嘿嘿

猜你喜欢

转载自blog.csdn.net/hmh4640219/article/details/111870783