4 + 5 day

三 列表

3.1 列表

列表,是能够存储各种数据的容器,列表是可变的,列表是有序的(下标),列表的容器符号[],list

3.1.1 创建一个空列表

list1 = []

3.1.2 增、删、改

(1)增加元素:

append():追加
insert():插入

list1.append('Python')
list1.append('Java')
list1.insert(1, 'HTML')
list1.insert(1, 0)
print(list1)

下标:python中下标
正向下标,从0开始
负向下标:从-1开始

(2)修改:通过下标改元素
语法:列表[下标] = 新的值

list1[1] = 'C'
print(list1)

(3)删除元素

del:语法:del 列表[下标]
remove:移除某个元素(彻底删除)
pop:移除某个元素(删除文件后知道删除的是谁)
clear:将列表清空

del list1[1]
print(list1)
print(list1.remove('Java'))
print(list1)
print(list1.pop(0))
print(list1)
list1.clear()
print(list1)

(4)查

index():从左向右查找元素,找到这个元素第一次出现的位置就停止查找返回下标,找不到报错。
a.默认从开头开始找
b.可以指定开始查找的位置

index1 = movie_list.index('长津湖')
print(index1)
index2 = movie_list.index('长津湖', 3)
print(index2)

3.1.3 转换

万国码(unicode)

中文字符的范围:\u4e00-\u9fa5

ord():将进制转换为十进制

print(ord('\u4e00'),ord('\u9fa5'))
chr()——能够将进制转换为其对应的符号
for i in range(19968, 40870):
    print(chr(i),end='')

3.2 下标和切片

3.2.1 下标

正向下标,从0开始;负向下标,从-1开始;下标不能越界。

list1 = ['蜘蛛侠', '环太平洋', '海王', '复仇者联盟']
print(list1[2], list1[-2])

3.2.2 切片

左闭右开区间,从原来的容器中提取元素组成新的容器.切片可以越界。

变量[M:N:step]

M:起始范围(不写M,默认从头开始取);

N结束范围(不写,默认取到尾);

step步长(step=1,可以不写)。

1.起始范围和结束范围不写的时候,冒号必须存在;步长不写时,冒号不用写。
2.步长控制获取的元素,每间隔步长-1个元素获取一个元素(获取的当前元素+步长=下一个要获取的元素)。
3.M和N必须同符号:step>0,M<N;step<0,M>N。
4.正向下标和负向下标可以组合使用。

movies = ['阿甘正传', '肖申克的救赎', '霸王别姬', '三傻大闹宝莱坞', '环太平洋', '猿人泰山']
# 练习:
# a.获取['阿甘正传'、'霸王别姬'、'环太平洋']
print(movies[:5:2])
print(movies[:-1:2])
print(movies[::2])
# b.获取['肖申克的救赎'、'环太平洋']
print(movies[1:5:3])
print(movies[1:-1:3])
print(movies[1::3])
# c.获取['环太平洋'、'霸王别姬'、'阿甘正传']
print(movies[-2::-2])
# d.获取['猿人泰山'、'阿甘正传']
print(movies[::-5])
# e.获取['霸王别姬']
print(movies[2:3])
a = []
a.append(movies[2])
print(a)
b = [movies[2]]
print(b)

3.3 列表遍历

循环(遍历)
movies = [‘阿甘正传’, ‘肖申克的救赎’, ‘霸王别姬’, ‘三傻大闹宝莱坞’, ‘环太平洋’, ‘猿人泰山’]

3.3.1 直接遍历

for i in movies:
    print(i)

3.3.2 间接遍历

len()能够查看容器的长度

print(len(movies))
for i in range(len(movies)):
    print(movies[i])

3.3.3 enumerate():

将列表中每个元素及其对应的下标放入一个二元组,将所有的二元组存放在一个序列中

将列表转换为一个可迭代对象

print(enumerate(movies))
for i in enumerate(movies):
    print(i)

练习:将下方列表中的元素从小到大排序。(冒号排序)

list1 = [23, 56, 10, 55, 76, 100, 30]
[23, 56, 10, 55, 76, 100, 30]
[23, 10, 55, 56, 76, 30, 100]
[10, 23, 55, 56, 30, 76, 100]

每趟排序,排序次数 + 1 = 本趟排序的元素个数

外层循环控制趟数

for i in range(1, len(list1)):
    for j in range(0, len(list1) - i):
        if list1[j] > list1[j + 1]:
            list1[j], list1[j + 1] = list1[j + 1], list1[j]
        print(list1)

3.4 列表运算

3.4.1 列表的重复

list1 = [1, 2, 3, 4]
print(list1 * 2)

3.4.2 列表的拼接

list2 =[ 4, 5, 6, 7]
print(list1 + list2)

3.4.3 成员运算

in 、not in — 结果是布尔值

print(3 in [1, 3, 4])
print([3] in [1 ,3,4])
print([3] in [1, 2, 3, [3]])

3.4.4 比较大小

a.比较大小的元素必须是同类型的
b.比较大小比较的是第一对不相等元素的大小(容器)
c.数字正常比较大小

list1 = [1, 2, '3', 4]
list2 = [1, 2, '4', 5]
print(list1<list2)

练习

有两个列表A和B,使用列表C来获取两个列表中公共的元素
A = [1, 'a', 4, 90]
B = ['a', 8, 'j', 1]

C = []
for i in A:
    if i in B:
        C.append(i)
print(C)

C = []
for i in A:
    for j in B:
        if i == j:
            C.append(i)
print(C)

3.5 列表的方法和函数

3.5.1 max,min

获取同类型数据中最大值,最小值

num = [1, 2, 3, 4]
print(max(num))
print(min(num))

3.5.2 count

统计某个元素出现的个数

print(num.count(4))
print(num.count(5))

3.5.3 sum - 求和

print(sum(num))

3.5.4 reverse

将列表倒序,返回值为None,直接修改列表本身

num.reverse()
print(num)
print(num[::-1])

3.5.5 sorted

将列表从小到大排序,生成新列表
sorted(列表,reverse=False) - 从小到大(默认不写)
reverse = True - 从大到小排序
sort - 将列表从小到大排序,修改原列表
列表.sort(reverse=False)默认不写,降序
列表.sort(reverse=True)升序

num1 = [23 ,78 , 0, 90]
print(sorted(num1))
print(sorted(num1,reverse=True))
print(num1)
num1.sort(reverse=False)
print(num1)
num1.sort(reverse=True)
print(num1)

3.5.6 extend()

将一个容器中的元素添加到列表中

num1.extend('acdea')
print(num1)

3.5.7 index

查找元素
从左向右查找,找到元素立刻停止,返回下标
如果查找的元素不存在 - 报错

index1 = num1.index('a')
print(index1)
指定从下标为5的位置开始查找
index1 = num1.index('a',5)
print(index1)
练习:不使用index(),查找第二个a的下标
print('方法一:')
num1=[90, 78, 23, 0, 'a','b', 'c', 'd', 'e', 'a',1,2,3]
a_count = 0
for i in range(len(num1)):
    if num1[i] == 'a':
        a_count += 1
        if a_count ==2:
            print(i)
            break
print('方法二:')
for i in range(6,len(num1)):
    if num1[i] == 'a':
        print(i)
print('方法三:')
for i,j in enumerate(num1):
    if j == 'a':
        print(i,end=' ')

3.6 列表去重

有一个列表,要求去掉重复的人名
names = ['张三', '李四', '大黄', '张三','张三']

方法一:
name=[]
for i in names:
    if i not in name:
        name.append(i)
print(name)

方法二:
names = ['张三', '李四', '大黄', '张三','张三', '李四', '李四']
for i in range(len(names)-1,-1,-1):
    if names.count(names[i])>1:
        del names[i]
print(names)

方法三:
names = ['张三', '李四', '大黄', '张三','张三', '李四', '李四']
index = 0
while index <= len(names) - 1:
    if names.count(names[index]) > 1:
        del names[index]
    else:
        index += 1
print(names)

3.7 列表推导式

列表推导式写法:列表推导式一般情况下代码简洁并且效率高。

语法一:[表达式 for 变量 in 容器]

num = [ i for i in range (1,101)]
print(num)
num_2 = [ 1 for _ in range(10)]
print(num_2)

语法二:[表达式 for 变量 in 容器 if 条件]

for循环执行一次,if分支判断一次,条件成立时表达式执行。

list3 = [i for i in range(1,101) if i % 2 ==0]
print(list3)

语法三:[表达式 for 变量 in 容器 for 变量 in 容器] - 向列表中添加元素

list4 = [i for i in range(3) for i in range(1,11)]
print(list4)

append()适用于所有向列表中追加元素的操作
列表推导式在某些情况下来替代append()
性能:列表推导式 > append()

练习1:利用列表推导式 存放指定列表中字符串的长度

list3 = ["good", "nice", "see you", "bye"]
len_list = [len(i) for i in list3]
print(len_list)

练习2:利用列表推导式将列表中的整数提取出来

list2 = [True, 17, "hello", "bye", 98, 34, 21]
new_list = [i for i in list2 if type(i) == int]
print(new_list)

3.8 随机模块

(1) random:随机模块
俄罗斯轮盘、抽奖等

import random

(2) randint(a,b) - 从[a,b]闭区间中随机获取一个整数。
randrange() - 约等于randint +range

print(random.randrange(1, 4, 2))

(3) choice() - 从容器中随机获取一个元素

print(random.choice([1, 2, 3, 4]))

(4) choices() - 从容器随机获取K个元素,有放回的抽取元素 - 放回抽取

print(random.choices([1,2,3,4],k=3))

(5) sample() - 从有序容器中无放回的抽取K个元素

print(random.sample([1,2,3,4],k=3))

(6) shffule() - 将有序容器随机打乱顺序,无返回值,修改序列本身

list1=[1,2,3,4]
print(random.shuffle(list1))
print(list1)

3.9 冒泡排序

已知条件:
a.序列中有N个元素,冒泡排序就进行N-1趟排序;
b.每趟排序结束以后,参与本趟排序的元素的最大值会出现在序列的最后方;
c.下一趟排序始终会比当前排序少一个元素。

C语言中两个变量值的交换

a = 3
b = 4

mid = a
a = b
b = mid
print(a,b)

Python中两个变量值的交换

i = 10
j = 20

i, j = j, i
print(i,j)

冒泡案例:

list1 = [10,25,3,55,90,76,20,30]

for i in range(1, len(list1)):
    for j in range(0, len(list1) - i):
        if list1[j] > list1[j + 1]:
            list1[j], list1[j + 1] = list1[j + 1], list1[j]
        print(list1)
print('最终结果:',list1)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值