【Python基础入门 列表的遍历、添加、删除、统计、排序】

1、输出每日一贴

import datetime

mot = ["今天星期一:\n坚持下去!",
       "今天星期二:\n活人微死!",
       "今天星期三:\n请假一天!",
       "今天星期四:\n明天放假!",
       "今天星期五:\n放假啦!",
       "今天星期六:\n放假第一天!",
       "今天星期日:\n想念周六!"]
day = datetime.datetime.now().weekday()  # 输出0-6,代表周一到周日
print(mot[day])

导入日期的类:import datetime

2、遍历列表

(1)直接使用for循环实现

nba = ["林黛玉", "贾宝玉", "王熙凤", "刘姥姥", "孙悟空", "猪八戒"]
for item in nba:
    print(item)

在这里插入图片描述
(2)用for循环和enumerate()函数实现

nba = ["林黛玉", "贾宝玉", "王熙凤", "刘姥姥", "孙悟空", "猪八戒"]
for idx, item in enumerate(nba):
    print("id:", idx, "item:", item)

在这里插入图片描述
关于enumerate()函数解释:
idx:用于保存元素的索引
item:用于保存获取到的元素值
nba:列表的名称

3、向列表添加、修改和删除元素

(1)添加

nba = ["林黛玉", "贾宝玉", "王熙凤", "刘姥姥", "孙悟空", "猪八戒"]
print("最开始的列表:", nba)
# 添加元素:append()方法
nba.append("你好")
nba.append("Python")
print("添加元素后的列表:", nba)
# insert()方法也可以添加元素,向列表指定的位置添加元素,执行效率没有append高,不推荐

补充:
listname.extend(seq)
listname为原列表,seq为添加的列表,seq的内容将追加到listname的后面

seq1 = ["你好"]
seq2 = ["Python!"]
print("添加前:", seq1)
seq1.extend(seq2)
print("添加后:", seq1)

在这里插入图片描述
(2)修改
修改列表的元素只需要通过索引获取该元素,并为其重新赋值即可

nba = ["林黛玉", "贾宝玉", "王熙凤"]
print(nba[1])
nba[1] = "大狗狗"
print(nba[1])
print(nba)

在这里插入图片描述
(3)删除

nba = ["林黛玉", "贾宝玉", "王熙凤", "刘姥姥", "孙悟空", "猪八戒"]
# 根据索引删除
del nba[0]  # 删除林黛玉
print(nba)
# 根据元素删除
nba.remove("猪八戒")  # 删除猪八戒
print(nba)
# 根据元素删除最好判空
value = "贾宝玉"
if nba.count("贾宝玉") > 0:
    nba.remove(value)
print(nba)
# count()方法用于判断指定元素出现的次数,返回值为0代表不存在

在这里插入图片描述

4、列表的计算和统计

(1)指定元素在列表出现的次数

nba = [1, 2, 3, 2, 1]
count = nba.count(3)#输出结果为1
print(count)

(2)指定元素首次出现的下标

nba = ["林黛玉", "贾宝玉", "王熙凤", "刘姥姥", "孙悟空", "猪八戒"]
idx = nba.index("贾宝玉")
print("id:", idx)#输出结果为id:1

(3)元素之和

nba = [1, 3, 5, 7, 9]
total = sum(nba)
print(total)  # 输出25

5、列表的排序

两种办法:sort()方法和内置的sorted()函数
(1)sort()方法,改变原序列

nba = [13, 37, 56, 8, 21, 45, 66]
print("排序前的列表:", nba)
nba.sort()
print("升序:", nba)
nba.sort(reverse=True)
print("降序:", nba)

排序前的列表: [13, 37, 56, 8, 21, 45, 66]
升序: [8, 13, 21, 37, 45, 56, 66]
降序: [66, 56, 45, 37, 21, 13, 8]
nba.sort(Key = None, reverse = False/True)
key:从每个元素提取一个用于比较的键
reverse:true表示降序排列。false表示升序排列
对于字符串列表排序时,采用先对大写字母排序,再对小写字母排序。不区分大小写需要对key指定参数

cha = ['cat', 'Tom', 'Angle', 'pet']
cha.sort()  # 默认区分大小写
print(cha)
cha.sort(key=str.lower)  # 不区分大小写
print(cha)

[‘Angle’, ‘Tom’, ‘cat’, ‘pet’]
[‘Angle’, ‘cat’, ‘pet’, ‘Tom’]
(2)内置的sorted()方法,不改变原序列

grade = [98, 97, 99, 56, 73, 97, 100]
grade_one = sorted(grade)
print("升序:", grade_one)
grade_two = sorted(grade, reverse=True)
print("降序:", grade_two)
print("原序列:", grade)

升序: [56, 73, 97, 97, 98, 99, 100]
降序: [100, 99, 98, 97, 97, 73, 56]
原序列: [98, 97, 99, 56, 73, 97, 100]

6、列表推导式

(1)生成指定范围的:
list = [expression for var in range]
list:生成的列表名称
expression:表达式,计算新列表的元素
var:循环变量
range:采用range()函数生成的range对象

import random

listName = [random.randint(10, 100) for i in range(10)]
print(listName)

随机生成:[77, 54, 71, 72, 79, 53, 59, 83, 18, 68]
补充:
random.randint() 是 random 模块中的一个函数,其作用是生成指定范围内的随机整数。该函数的返回值包含了上下限端点的值。
random.randint(a, b)
a:此为随机整数范围的下限,生成的随机数不会小于这个值。
b:它是随机整数范围的上限,生成的随机数不会大于这个值。
需要注意的是,这里要求 a 必须小于或等于 b,否则会引发 ValueError 异常。
(2)生成指定需求的
newlist = []expression for var in list]

price = [1, 3, 6, 4]
newList = [float(i*0.5) for i in price]
print(newList)

[0.5, 1.5, 3.0, 2.0]
(3)从列表中选择符合条件的

price = [1, 3, 6, 4, 8, 12]
newList = [x for x in price if x > 4]
print(newList)

[6, 8, 12]

7、二维列表

arr = [[j for j in range(5)] for i in range(4)]
print(arr)

[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]

横竖版古诗:

str1 = "千山鸟飞绝"
str2 = "万径人踪灭"
str3 = "孤舟蓑笠翁"
str4 = "独钓寒江雪"
verse = [list(str1), list(str2), list(str3), list(str4)]

for i in range(4):
    for j in range(5):
        if j == 4:
            print(verse[i][j])
        else:
            print(verse[i][j], end="")
print("**************")

for i in range(5):
    for j in range(4):
        if j == 3:
            print(verse[j][i])
        else:
            print(verse[j][i], end="")

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值