列表

查询指定范围数据 切片

# lists = []#声明一个空列表
# print(type(lists))#<class 'list'>
# 列表  list
# 里边若干个元素  用 , 隔开
# python 任何类型都可以放到列表中
# 长度可以无限  可以0个 可以1个 可以多个  上限取决于硬件

lists=[123,12.34,'灭活疫苗',True,[1,2,3],(1,'a'),{'name':'zhangsan'},{1,2,3},None]
print(lists)#查看  [123, 12.34, '灭活疫苗', True, [1, 2, 3], (1, 'a'), {'name': 'zhangsan'}, {1, 2, 3}, None]
print(lists[2])#查看其中一个 根据索引查看元素 索引从0开始    #灭活疫苗
lists[2]='武汉灭活疫苗' #修改
print(lists)  #[123, 12.34, '武汉灭活疫苗', True, [1, 2, 3], (1, 'a'), {'name': 'zhangsan'}, {1, 2, 3}, None]

查看指定范围数据   切片
print(lists[2:4])#包含2 不包含4  输出下标 2 3
print(lists[2:4:2]) #起始索引(下标):结束索引(下标):步长 可以写可以不写 默认为1 这里表示步长为2 隔两个取一个
print(lists[:])#取出所有元素 没有起始 没有结束
print(lists[2:])#有起始 没有结束 从下标为2 取到最后 步长为1
print(lists[:4])#没有起始 有结束 从下标0取到4的前一个 步长为1
print(lists[:-1])#-1表示倒数第一个位置 不包含倒数第一个
print(lists[-1])#-1表示最后一个元素
print(lists[-4:-1])#从倒数第四个开始取到倒数第一个 不包括倒数第一 步长为一
print(lists[5:-1])
print(lists[-1:-5]) #因为 从左往右 这里边-5在-1 左边 取不到元素 返回 []空列表
print(lists[2:6:-1])#步长为1的时候从左往右取 -1从右往左取 从2往左取 下标6在右边取不到 返回[]空列表
print(lists[6:2:-1])#[{'name': 'zhangsan'}, (1, 'a'), [1, 2, 3], True]
print(lists[::-1])#从后往前取

增加列表元素

** append insert extend **

#列表就好比我们的行李箱 本来就是保存数据的 顺序是可以变的

#####append 在列表结尾添加元素
heros=['钢铁侠','蜘蛛侠','蝙蝠侠']
print(heros)
#列表.append(元素)
heros.append('无敌女侠')
print(heros)
#######insert在列表中间插入
heros=['钢铁侠','蜘蛛侠','蝙蝠侠']
print(heros)
#列表.insert(指定下标,元素)# 原来的元素向右移动
heros.insert(1,'黑寡妇')
print(heros)
##########extend合并新列表
heros=['钢铁侠','蜘蛛侠','蝙蝠侠']
print(heros)
money = ['基本工资','绩效','项目奖金','全勤奖','过节奖励','年终奖']
#列表.extend(新列表) #把新列表的数据追加到列表中
heros.extend(money)
print(heros)
money.extend(heros)#将heros追加到money列表元素后边
print(money)

删除列表元素

** pop remove del clear **

#pop()默认最后一个 括号里可以传 元素所在的下标
money = ['基本工资','绩效','项目奖金','全勤奖','过节奖励','年终奖','扣除的钱']
print(money)
money.pop()#默认移除最后一个元素
test=money.pop(3)#指定删除下标为3的元素
print(money)#['基本工资', '绩效', '项目奖金', '过节奖励', '年终奖']
print(test)#输出删除的元素    #全勤奖

#remove() 里边传元素 表示直接删除这个元素
money = ['基本工资','绩效','项目奖金','全勤奖','过节奖励','年终奖','扣除的钱']
print(money) 
money.remove('全勤奖') 
print(money) # ['基本工资', '绩效', '项目奖金', '过节奖励', '年终奖', '扣除的钱']


#del 根据列表删除 del 列表[下标]
money = ['基本工资','绩效','项目奖金','全勤奖','过节奖励','年终奖','扣除的钱']
print(money)
del money[3]
print(money) #['基本工资', '绩效', '项目奖金', '过节奖励', '年终奖', '扣除的钱']

#clear 请空列表
money.clear()
print(money) #[]

查询是否位于列表

** in not in **

import random
num = random.randint(1,10)
print(num)
if num in [1,2,3,4,5]:
    print('win')
else:
    print('loser')
import random
num = random.randint(1,10)
print(num)
if num not in [1,2,3,4,5]:
    print('win')
else:
    print('loser')

列表查询

** index count len() **

#index 用来查看列表中指定一个元素的下标 列表.index(元素)
#count 用来统计列表中某个元素出现的次数 列表.count(元素)
#len() 用来统计列表的长度 len(列表)
heros=['钢铁侠','蜘蛛侠','蝙蝠侠','佐助','鸣人']
print(heros.index('佐助'))#3
print(heros.count('鸣人'))#鸣人出现的次数
print(len(heros))#查看heros列表中的元素长度

导出列表的元素

用循环

killer = ['比尔','韩信','赵云','荆轲','兰陵王','阿珂']
start = 0#这里指下标
while start<len(killer):
    print(killer[start],end=';')
    start+=1
    
#for 变量 in 后便一定是可迭代对象
#字符串 range 列表 字典 元组 集合
for x in killer:
    print(x,end=';')

交换两个变量得值

#交换两个变量得值
num1=50
num2=100
print(num1,num2)

#拆包
num1,num2=num2,num1
print(num1,num2)

#引进第三个变量
num3=num1
num1=num2
num2=num3
print(num1,num2)

#如果两个变量都是数值
num1=num1+num2#150
num2=num1-num2#50
num1=num1-num2#100
print(num1,num2)

#异或运算  二进制十进制转换
num1=num1^num2
print(num1)#86  
num2=num1^num2
print(num2)#50
num1=num1^num2
print(num1)#100
print(num1,num2)

列表的排序和反转

**sort sorted reverse **

num=[12,3,9,21,2,8,33,15,1]
#sort()直接对原来的列表进行排序 原来的结果发生了变化
num.sort()
print(num)#[1, 2, 3, 8, 9, 12, 15, 21, 33]
num.sort(reverse=True)   #降序
print(num)#[33, 21, 15, 12, 9, 8, 3, 2, 1]

#sorted不会改变原来的数据 将结果放到了一个新的列表中
res = sorted(num)
print(num)#原来结果没变  [12, 3, 9, 21, 2, 8, 33, 15, 1]
print(res)#存放的是排序后的结果  [1, 2, 3, 8, 9, 12, 15, 21, 33]

#不排序 只是掉了个个 原来列表发生了变化
num.reverse()
print(num) #[1, 15, 33, 8, 2, 21, 9, 3, 12]

列表切片查找

peoples=['张三','李四',12,'王五','赵六','张三']
print(peoples.index('张三'))#如果有两个张三  默认返回第一个
print(peoples.index('张三',1,4))#不在就报错
print(peoples.index('张三',0,4))#0
print(peoples.index('张三',0,4,-1))#不支持步长
print(peoples.index('张三',1,6))#5  包含1  不包含6 取到下标为5

列表的嵌套

num=[34,18,9,20,1,15,11,30,4,62,10]#一维数组

num1=[[34,18,9,20],[1,15],[11,30,4],[62,10]]#二维数组
print(num1[0][3])#20

num2=[[34,[18,9,20],1],[15,11,30],[4,62,10]]#三位数组
print(num2[0][1][1])#9

num3=[[34,[18,[9,20]],1],[15,11,30],[4,62,10]]#四位数组
print(num3[0][1][1][1])#20
print(num3[0][1][1][0])#9

#随机选取一个二维数组
import random
nums=[34,18,9,20,1,15,11,30,4,62,10]
office = [[],[],[]]#把上面的人随机放到  不同的教室中
x = 0#下标
for name in nums:
    index=random.randint(0,2) #0-2随机取其中一个数字
    office[index].append(name)#把name随机放到office
# print(office)
for y in office:
    print('办公室%d人数为%d:'%(x,len(y)))
    x+=1
    for z in y:
        print('有:%s'%z,end=' ')
    print('\n')
    print('='*50)

z=0
import random
nums=['路飞','甚平','索隆','山治','乌索普','娜美','罗宾','乔巴','布鲁克','弗兰奇']
office=[[],[],[]]#0 1 2
x=0
for name in nums:
    index=random.randint(0,2)
    office[index].append(name)#随机选取二元列表 添加进去
print(office)
for y in office:
    print('第%d间房子有%d个人'%(x,len(y)))
    x += 1
    for z in y:
        print(z,end='  ')
    print('\n')

[['路飞', '索隆'], ['甚平', '山治', '布鲁克', '弗兰奇'], ['乌索普', '娜美', '罗宾', '乔巴']]
第0间房子有2个人
路飞  索隆  

第1间房子有4个人
甚平  山治  布鲁克  弗兰奇  

第2间房子有4个人
乌索普  娜美  罗宾  乔巴  

列表推导式(生成式)

#列表推导式和列表生成式   代表的一样
#Python 独有的
#列表生成式 性能更高
#Python解释器字节码指令中  有专门针对生成式的  指令 LIST_APPEND
#而for循环就是通过方法调用 LIST_APPEND  和 CALL_METHOD 为列表添加元素
# 调用方法本身就有损耗
# 所以列表生成式的性能最高

#创建一个1-9 数字组成的列表
#思路  1.循环遍历出来 1-9
#2.没一个出来以后 加入到一个列表中,最后打印列表
res=[]#创建一个空列表
for x in range(1,10):#包含1 不包含10
    res.append(x)
print(res)
#列表生成式  写法
res1=[x for x in range(1,10)]
print(res1)

#元音字母  a o e i u
# hello world  除了空格和元音字母  然后放在列表中
res=[]
for x in 'hello world':
    if x  not in ' aeiou':
        res.append(x)
print(res)
#列表生成式  写法
res2=[x for x in 'hello world' if x  not in ' aeiou']
print(res2)

#创建 两个字符串 'meiyuan'  '$%'   组成笛卡尔积
res=[]
for x in 'meiyuan':
    for y in '$%':
        res.append(x+y)
print(res)
#列表生成式  写法
res3=[x+y for x in 'meiyuan' for y in '$%']
print(res3) #['m$', 'm%', 'e$', 'e%', 'i$', 'i%', 'y$', 'y%', 'u$', 'u%', 'a$', 'a%', 'n$', 'n%']

列表的复制

num=[34,18,9,20,1,15,11,30,4,62,10]
#栈内存里边变量值 num
#堆内存里边数据 34,18,9,20,1,15,11,30,4,62,10
#######浅拷贝###############
# num1=num
# print(num)#[34, 18, 9, 20, 1, 15, 11, 30, 4, 62, 10]
# print(num1)#[34, 18, 9, 20, 1, 15, 11, 30, 4, 62, 10]
#
# num[5]=150
# print(num)#[34, 18, 9, 20, 1, 150, 11, 30, 4, 62, 10]
# print(num1)#[34, 18, 9, 20, 1, 150, 11, 30, 4, 62, 10]
#以上是浅拷贝  num1和nums 共同指向一个堆内存的地址 相互影响

#############深拷贝#######################
# num1 = num.copy()#复制内容 然后把结果放到了新的列表中  不跟原来的列表 指向一个内存地址
#互相不干扰
# print('拷贝之后的',num1)
# num1[5]=150
# print('还是原列表',num)
# print('复制以后进行了修改',num1)

#总结
num1=num  #浅拷贝
num1=num.copy()#深拷贝
import copy  #导入一个类
num=[34,18,9,20,1,15,11,30,4,62,10]
num2=copy.copy(num)
print('原列表',num)
print('复制之后的',num2)
num2[5]=150
print('修改之后的',num2)
print('还是原列表',num)

冒泡排序

# 原理 让一个数字跟右边相邻的数值进行比较运算
# 如果这个数字大于右边的数字 两个数字交换位置
num = [12, 3, 9, 21, 2, 8, 33, 15]  #0-7
# num[0] num[1]
# num[1] num[2]
# ....
# num[n] num[n+1]
# num[len(num)-2] num[len(num)-1]
# 冒泡顺序
# 需要  轮
# 每一轮都会比较次数
# 综上 思路 嵌套循环
i = 0 #列表下标
k = 0 #每轮次数统计
while i < len(num)-1: # 外边是轮
    i += 1
    j = 0
    while j < len(num) - 1: #里边是每轮走多少次
        if num[j] > num[j + 1]:
            num[j], num[j + 1] = num[j + 1], num[j]
            k += 1
        j += 1
    print(num)
    print(k)

[3, 9, 12, 2, 8, 21, 15, 33]
5
[3, 9, 2, 8, 12, 15, 21, 33]
8
[3, 2, 8, 9, 12, 15, 21, 33]
10
[2, 3, 8, 9, 12, 15, 21, 33]
11
[2, 3, 8, 9, 12, 15, 21, 33]
11
[2, 3, 8, 9, 12, 15, 21, 33]
11
[2, 3, 8, 9, 12, 15, 21, 33]
11

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值