python入门day06列表

列表的定义和获取元素

作用:类似其他语言的数组,但他可以存放多种类型的元素,而数组声明什么类型就只能存放什么类型的元素

#声明
names=['Jack','tom','lucy','superman','ironman']
computer_branda=[]

print(id(names))#1780627220488
print(id(computer_branda))#1780627221192

#元素获取使用: 下标 索引
#获取第一个元素
print(names[0])#Jack
print(names[-5])
#获取最后一个元素
print(names[-1])#ironman
print(names[len(names)-1])

结合循环使用列表

#for i in 序列(字符串/列表)
for i in 'hello':
    print(i,end=',')#h,e,l,l,o,
print()

names=['Jack','tom','lucy','superman','ironman']
for name in names:
    print(name,end=' ')#Jack tom lucy superman ironman
print()
#查询names里面有没有保存超人
for  name in names:
    if name =='superman':
        print("有超人!")
        break
else:
    print("没有超人")

列表增删改

brands=['hp','dell','thinkpad','支持华为','lenovo','mac','神州']


#1.---改  列表是可变的,而字符串是不可变的
print(brands)#['hp', 'dell', 'thinkpad', '支持华为', 'lenovo', 'mac', '神州']
print(brands[-1])#神州
brands[-1]='HASEE'#进行修改
print(brands)#['hp', 'dell', 'thinkpad', '支持华为', 'lenovo', 'mac', 'HASEE']
print('--------------------')

if 'l' in 'lock':
    print('l in lock')#l in lock


for brand in brands:#取出列表中其中一个元素赋值给变量brand,此时的brand是一个字符串
    if '华为' in brand:
        brand='HUAWEI'
print(brands)#['hp', 'dell', 'thinkpad', '支持华为', 'lenovo', 'mac', 'HASEE']
#从上面结果可以知道修改失败,原因是我们修改的对象是brand而不是brands


for i in range(len(brands)):
    if '华为' in brands[i]:
        brands[i]='HUAWEI'
print(brands)#['hp', 'dell', 'thinkpad', 'HUAWEI', 'lenovo', 'mac', 'HASEE']
#因此我们如果要修改列表要去根据下标修改到数组本身

#删除----陷进多多

brands=['hp','dell','thinkpad','支持华为','lenovo','mac','神州']
del brands[2]
print(brands)#['hp', 'dell', '支持华为', 'lenovo', 'mac', '神州']

# for brand in brands:
#     if brand=='hp':
#         del ?

# for i in range(len(brands)):#在第一次编译后生成0 1 2 3 4 5
#     if 'hp' in brands[i] or 'mac' in brands[i]:
#         del brands[i]
# print(brands)#报错拉!!!因为他删除hp后 brands只有五个了,[ 'dell', '支持华为', 'lenovo', 'mac', '神州']
# 那么brands[3]删掉'mac'---[ 'dell', '支持华为', 'lenovo', '神州']
#接下来访问brands[4]就开始报错了,序列0-5是一开始生成的,而后面列表却没那么多个可以访问了


# l=len(brands)
# for i in range(l):
#     if 'hp' in brands[i]:
#         del brands[i]
#         l-=1#没有用,一样报错,你修改了l,但是l是原先就生成的,后面的与他无关了
# print(brands)

l=len(brands)
i=0
while i<l:
    if 'hp' in brands[i] or 'mac' in brands[i]:
        # print(brands[i])
        del brands[i]
        l-=1
    i+=1#处理第几个元素
print(brands)#['dell', '支持华为', 'lenovo', '神州']存在潜在问题
#过程解析
# i=0-->['dell', '支持华为', 'lenovo', 'mac', '神州'] l=5 i=1
# i=1  直接跳过判断dell了,如果dell也是要删的呢?l=5 i=2
# i=2                                       l=5 i=3
# i=3-->['dell', '支持华为', 'lenovo','神州'] l=4 i=4  结束,越过神州


#变化
brands=['hp', 'dell', '支持华为', 'lenovo', 'mac', '神州']
l=len(brands)
i=0
while i<l:
    if 'hp' in brands[i] or 'mac' in brands[i] or 'dell' in brands[i]:
        del brands[i]
        l-=1
    i+=1
print(brands)#['dell', '支持华为', 'lenovo', '神州']越过了dell没有被移除

#练习(可能存在漏删,因为删完后面的元素会上来,下一个应该检测的其实是当前位置元素了,不应该+1)
words=['hello','goods','gooo','world','digot','alpha']
w=input('请输入一个单词')
i=0
l=len(words)
while i<l:
    if w in words[i]:
        del words[i]
        l-=1
    i+=1
print(words)
#请输入一个单词go
# ['hello', 'gooo', 'world', 'alpha']




#变化----不漏删版本
words=['hello','goods','gooo','world','digot','alpha']
w=input('请输入一个单词')
i=0
l=len(words)
while i<l:
    if w in words[i]:
        del words[i]
        l-=1
        #保证删除后下一个元素仍是本身即可
        # i-=1
        continue
    i+=1
print(words)
#请输入一个单词go
# ['hello', 'world', 'alpha']

列表切片

#列表切片[start:end:step]
#字符串的切片切完仍是子字符串。列表切片切完仍是一个子列表
s='abcdefg'
print(s[2:5])#cde

list1=['杨超越','热巴','佟丽娅','杨幂','赵丽颖','刘亦菲','黑嘉嘉']
print(list1)
print(list1[3])#杨幂

print(list1[3:6])#['杨幂', '赵丽颖', '刘亦菲']
print(list1[-3:-1])#['赵丽颖', '刘亦菲']
#切片步长
print(list1[::2])#['杨超越', '佟丽娅', '赵丽颖', '黑嘉嘉']
print(list1[-5:-1:2])#['佟丽娅', '赵丽颖']
#反方向---只要步长是负数
print(list1[-1::-1])#['黑嘉嘉', '刘亦菲', '赵丽颖', '杨幂', '佟丽娅', '热巴', '杨超越']
print(list1[-1::-2])#['黑嘉嘉', '赵丽颖', '佟丽娅', '杨超越']

增加

1.append

girls=['杨幂']
#当输入quit表示退出循环
while True:
    name=input('请输入你的女神名字')
    if name=='quit':
        break
    girls.append(name)
print(girls)

2.extend()&&insert()

#extend
girls=['杨幂']
names=['大s','小s']
girls.extend(names)
print(girls)#['杨幂', '大s', '小s']


#insert
girls.insert(1,'刘涛')
print(girls)#['杨幂', '刘涛', '大s', '小s']

练习

#产生10个随机数,将其保存到列表中---10个中可能产生相同的
import  random

random_list=[]
for i in range(10):#循环10次产生随机数,这种可能导致产生相同的随机数
    ran =random.randint(1,20)
    random_list.append(ran)
print(random_list)#[11, 6, 13, 18, 18, 16, 1, 14, 5, 9]

#产生10个随机数,将其保存到列表中---不会出现相同,但是可能没有达到10个,因为机会只给10次,有相同就舍弃这次机会
import  random

random_list=[]
for i in range(10):
    ran =random.randint(1,20)
    if ran not in random_list:
        random_list.append(ran)
print(random_list)#[3, 11, 4, 9, 7, 5, 6, 12]


#用while实现
import random
random_list=[]
i=1
while i<=10:
    ran=random.randint(1,20)
    if ran not in random_list:
        random_list.append(ran)
        i+=1
print(random_list)#[15, 13, 19, 12, 18, 2, 16, 7, 5, 20]


#找出列表的最大值
max_val=max(random_list)
print(max_val)#20

#自定义求最大值
#假设列表中的第一个元素就是最大值
max_val=random_list[0]
for val in random_list:
    if val>max_val:
        max_val=val
print('最大值:{}'.format(max_val))#最大值:20


#求和
he=sum(random_list)
print('系统求和',he)

sum_1=0
for value in random_list:
    sum_1+=value
print(sum_1)

列表排序

#列表排序
#sort() 改变这个列表本身而已
# sorted() 不改变本身,只改变副本
mylist=[6,2,5,99,43,56,22]
new_list=mylist.sort()
print(mylist)#[2, 5, 6, 22, 43, 56, 99]
print(new_list)#None


mylist=[6,2,5,99,43,56,22]
new_list=sorted(mylist)
print(mylist)#[6, 2, 5, 99, 43, 56, 22]
print(new_list)#[2, 5, 6, 22, 43, 56, 99]
new_list=sorted(mylist,reverse=True)
print(new_list)#[99, 56, 43, 22, 6, 5, 2]

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

列表的常用方法

'''
字符串函数:
'abc'.split('-')
列表函数:
添加:append extend insert
删除:del list[index]
     remove(ele) 移除列表中第一个匹配ele的元素,如果找不到则报异常,返回值为none
     pop() 移除列表最后一个元素,返回值为移除的元素
     pop(index) 移除列表中指定位置的元素,返回值为移除的元素
     clear() 清空列表
翻转: reverse() 将列表中的元素翻转,会改变原有列表



'''

x='a-b-c'.split('-')
print(x)#['a', 'b', 'c']字符串切割成列表

hotpot_list=['海底捞','钾補钾補','热辣一号','宽板凳']
hotpot_list.append('张亮麻辣烫')
print(hotpot_list)#['海底捞', '钾補钾補','热辣一号', '宽板凳', '张亮麻辣烫']

del hotpot_list[0]
print(hotpot_list)#['钾補钾補','热辣一号', '宽板凳', '张亮麻辣烫']

result=hotpot_list.remove('钾補钾補')
print(result)#None
print(hotpot_list)#['热辣一号', '宽板凳', '张亮麻辣烫']

result=hotpot_list.pop()
print(result)#张亮麻辣烫
print(hotpot_list)#['热辣一号', '宽板凳']

hotpot_list=['海底捞','钾補钾補','热辣一号','宽板凳']
result=hotpot_list.pop(2)
print(result)#热辣一号
print(hotpot_list)#['海底捞', '钾補钾補', '宽板凳']

result=hotpot_list.clear()
print(result)#None
print(hotpot_list)#[]


#两种逆序比较
hotpot_list=['海底捞','钾補钾補','热辣一号','宽板凳']
#不改原列表
print(hotpot_list[::-1])#['宽板凳', '热辣一号', '钾補钾補', '海底捞']
print(hotpot_list)#['海底捞', '钾補钾補', '热辣一号', '宽板凳']
#改变原列表
print(hotpot_list.reverse())#None
print(hotpot_list)#['宽板凳', '热辣一号', '钾補钾補', '海底捞']

#两种排序
'''
sorted(list)
list.sort()
'''
l=[4,8,1,8,9,5,7]
#改变原列表
print(l.sort(reverse=True))#None
print(l)#[9, 8, 8, 7, 5, 4, 1]
#不改变原列表
l=[4,8,1,8,9,5,7]
print(sorted(l))#[1, 4, 5, 7, 8, 8, 9]
print(l)#[4, 8, 1, 8, 9, 5, 7]

游戏练习

#游戏
print('*'*40)
print('\t欢迎来到王者荣耀')
print('*'*40)
role=input('请选择游戏人物:(鲁班,后裔,李白,孙尚香,貂蝉)')
coins=1000
my_weapon=[]
print('欢迎{0}来到王者荣耀,当前金币是:{1}'.format(role,coins))
while True:
    choice = int(input('''
    请选择:
    1.购买武器
    2.打仗
    3.删除武器
    4.查看武器
    5.退出游戏
    6.查看当前金币
    '''))
    if choice==1:
        print('欢迎进入武器库:')
        weapons=[['屠龙刀',500],['樱花枪',400],['98k枪',1000]]
        for weapon in weapons:
            print(weapon[0],weapon[1],sep='   ')
        weaponname=input('请选择你要购买的武器')
        #1.我当前没有这个武器2.这个武器存在武器库中
        if weaponname not in my_weapon:
            for weapon in weapons:
                if weaponname==weapon[0]:
                    #金币是否足够
                    if coins>=weapon[1]:
                        my_weapon.append(weaponname)
                        coins-=weapon[1]
                        print('{}购买成功'.format(weaponname))
                        break
                    else:
                        print('金币不够,请快打仗挣金币')
                        break
            else:#能够正常执行到这里,说明武器库没有这个武器
                print('输入武器名称错误')
    elif choice==2:
        pass
    elif choice==3:
        pass
    elif choice==4:
        pass

    elif choice==5:
        answer=input('确定离开王者荣耀?(Y/N)')
        if answer=='Y':
            break
        else:
            pass

    elif choice==6:
        print('当前金币为:',coins)
    else:
        print('输入错误,请重新选择')


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
武沛齐是一位博主,在他的博客园上有一系列的Python教程,名为《Python之路》。这个教程被分为多篇文章,包括Python简介和入门Python基础、模块、面向对象等内容。此外,还有关于Socket、线程和进程、堡垒机实例以及数据库操作等主题。其,《Python之路【第一篇】:Python简介和入门》是该教程的第一篇文章。你可以在找到他的博客链接,了解更多关于这个教程的内容。另外,如果你对PyQt也感兴趣,他的压缩包还包含了两个PDF文件,一个是pyqt4教程的英文版,另一个是pyqt5教程的文版。你可以在找到这些文件的介绍。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python学习详细教程-武沛齐](https://blog.csdn.net/xu380393916/article/details/81050533)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [python GUI库&pyQt4教程&pyQt5教程&英文教程](https://download.csdn.net/download/u012961612/88243359)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Django学习-武沛齐教程【day1】](https://blog.csdn.net/weixin_65656674/article/details/126574491)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值