2021-08-25 Python之列表操作

# list 列表:只要声明 [] 就是一个列表,可以放字符串,数字
# names = ['lily','ironman','jass','hok','jim']
# 从左到右 0 1 2 3 4
# 从右到左 -5 -4 -3 -2 -1

 

 1 #声明
 2 names=['lily','ironman','jass','hok','jim']
 3 computer_brands=[ ]
 4 #地址
 5 print(id(names))
 6 print(id(computer_brands))
 7 #元素获取使用:下标/索引
 8 print(names[0])
 9 print(names[1])
10 #获取最后一个元素
11 print(names[-1])  #方法一
12 print(len(names))  #方法二
13 print(names[len(names)-1])   #方法三
14 #获取第一个元素
15 print(names[-5])
16 #列表循环遍历
17 for name in names:
18     print(name)
19 #查询列表
20 for name in names:
21     if name=='lily':
22         print('有lily')
23         break
24 else:
25     print('没有找到lily')
26 #查询列表的简便方法
27 if 'lily' in names:
28     print('有lily')
29 else:
30     print('没有lily')

#list 列表:增删改查

 1 brands=['hp','dell','lenovo','华为','thinkpad','mac','神州']
 2 #
 3 #知道位置时
 4 print(brands)
 5 brands[-1]='hasee'     #使用下标找到,赋值
 6 print(brands)
 7 #不知道位置时
 8 for i in range(len(brands)):
 9     if '华为' in brands[i]:
10         brands[i]='HUAWEI'
11         break
12 print(brands)
13 
14 #删除   del       delete缩写
15 del brands[2]
16 print(brands)
17 #只要是 hp  lenovo 都删除
18 l=len(brands)
19 i=0
20 while i<l:
21     if 'hp' in brands[i] or 'mac' in brands[i]:
22         del brands[i]
23         l-=1
24     i+=1
25 print(brands)
1 if 'good' == 'good':     #  == 比较的是内容
2     print('相等')
3 if 'good' in 'good':       #  in  相等或包含,应用在字符串判断中,也用在列表中
4     print('相等')

# if ... in 'abc' : 或 if ... 'a' in ['a','b','c']: 让in 作为一个判断的条件表达式
# for ... in 循环遍历 ,for 变量 in 字符串|列表: in 只作为循环条件

1 i=1
2 if 'good' in ['good','goods','cvb','kkk','word','words']:
3     print('包含……',i)
4     i+=1
1 word = ['hello','good','apple','world','digit','alpha']
2 w=input('请输入一个单词:')
3 for word in words:                  #判断内容是否在列表存在
4     if w in word:                       #判断字符串w有没有出现在word
5         print('存在此单词')
6         break

#列表的切片

 1 list=['杨超越','佟丽娅','杨幂','赵丽颖','刘亦菲','快快',100,99.9]
 2 print(list1)
 3 print(list[3])
 4 print(list1[3:6])      #将截取的结果保存到一个列表中
 5 print(list1[-3:-1])
 6 print(list1[::2])   #步长
 7 print(list1[-5:-1:2])
 8 
 9 #反方向
10 print(list1[-1::-1])

#列表元素的添加
#临时的小数据库:list
#列表的函数使用:append() extends() insert()

1 girls=[]
2 while True:
3     name=input('请输入名字:')
4     if name=='quit':
5         break
6     grils.append(name)   #append() 末尾追加
7 print(grils)

#extend() 类似列表的合并

1 nams=[]
2 name=input('请输入名字:')
3 girls.extend(names)
4 print(girls)

#符号 + 也可以用于列表的合并

1 girls=girls+names
2 print(girls)

#insert 从指定位置插入元素

1 ['杨幂','孙俪','王丽坤','表达']
2 #  0       1        2         3
3 girls.insert(1,'泰勒')
4 print(girls)

#产生10个不同的随机数保存到列表中

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

#for 循环产生的随机数不一定保证是10个,用可控的while循环更好

1 import random
2 random_list=[]
3 i=0
4 while i<10:
5     ran=random.randint(1,20)
6     if ran not in random_list:
7         random_list.append(ran)
8         i+=1
9 print(random_list)

#找出列表中的最大值,最小值,求和

1 max_value=max(random_list)
2 print(max_value)
3 min_value=min(random_list)
4 print(min_value)
5 s=sum(random_list)
6 print(s)

#自定义求最大值,最小值

1 print('-----------------------------------------------------------')
2 maxvalue=random_list[0]
3 minvalue=random_list[0]
4 for value in random_list:
5     if value>maxvalue:
6         maxvalue=value
7     if value<minvalue:
8         minvalue=value
9 print(maxvalue,minvalue)

#列表元素排序 ; ascending order,升序 ,descending order,降序

1 new_list=sorted(random_list)
2 print(new_list)
3 new_list=sorted(random_list,reverse=True)
4 print(new_list)

#字符串中使用的符号:+ * in not in is not is []
#列表支持的符号:+ *

 1 l1=[1,2,4,5,6]
 2 l2=[6,7,8,9,2]
 3 l3=l1+l2
 4 print(l3)
 5 l4=[1,2,3]*3
 6 print(l4)
 7 result=3 in [1,2,3,5,6]
 8 print(result)
 9 result=[3] in [1,2,3,4,5]
10 print(ressult)
11 result=[3] in [1,2[3],4,5]
12 print(result)

#列表中的元素:整型,字符串,浮点型,列表,元组,字典,对象

1 result=[3,4] in [1,2,[3,4,5],7]
2 print(result)
3 l5=[[1,2,3],[4,5,5],[6,7,8]]
4 print(len(l5))
5 e=l5[2]
6 print(e,type(e))
7 print(l5[1][2])

#类型转换:list() 将指定的内容转为列表,可迭代的内容可以放到list中

1 s='ascdf'  
2 result=list(s)  #字符串是可迭代的
3 print(result)
4 # iterable 可迭代的 , 可以for ...in 里面循环就是可迭代的
5 print(list(range(1,10,3)))  #range() 是可迭代的
6 print(list(10))   #int obj is not iterable

#将字符串中的大写改为小写,小写改为大写,数字不变

 1 a='zxccvbnWERTRUI1234534456'
 2 s=''
 3 for i in a:
 4     if i.isupper():
 5         s+=i.lower()
 6     elif i.islower():
 7         s+=i.upper()
 8     else:
 9         s+=i
10 print(s)

#连接字符串:join()

1 x='abc'
2 y='wer'
3 z=['h','j','k']
4 print(x.join(y))
5 print(x.join(z))

#字符串函数:split()
#列表函数:只有通过列表才可以调出来的函数

添加:append() extend() insert()
排序:list.sort() sorted(list)
次数:count()
删除: del() list[index] remove() pop() clear()
remove():删除列表第一次出现的元素,如果没有找到要删除的元素则报出异常
pop(): 弹栈,删除列表中的最后一个元素,返回值是删除的那个元素,可以指定下标删除index
clear() : 清除列表
reverse():改变了列表的位置结构
队列:先进先出 FIFO first in first out
栈:先进后出

 

#列表的删除

 1 hotpot_list=['张亮麻辣烫','吖哺吖哺','杨国福麻辣烫','海底捞']
 2 result=hotpot_list.remove('吖哺吖哺')
 3 print(result)
 4 print(hotpot_list)
 5 result=hotpot_list.pop()
 6 print(result)
 7 print(hotpot_list)
 8 result=hotpot_list.clear()
 9 print(result)
10 print(hotpot_list)
11 hotpot_list.reverse()
12 print(hotpot_list)

#列表的排序

1 ls=[7,4,5,6,3,9]
2 ls.sort()
3 print(ls)
4 ls.sort(reverse=True) #升序
5 print(ls)
6 print(ls.count(7))

 

#1.选择人物  2.购买武器金币  3.打仗赢金币 4.选择删除武器  5.查看武器 6.退出游戏

  1 import random
  2 print('*'*45)
  3 print('\t欢迎来到王者荣耀')
  4 print('*'*45)
  5 role=input('请选择游戏人物:\n1.鲁班 2.后羿 3.李白 4.孙尚香 5.貂蝉 6.诸葛亮 \n')
  6 coins=10000
  7 weapon_list=[]
  8 
  9 print('欢迎{}来到王者荣耀,当前金币是:{}'.format(role,coins))
 10 
 11 while True:
 12     choice=int(input('\n请选择: \n 1.购买武器\n 2.打仗 \n 3.删除武器 \n 4.查看武器 \n 5.退出游戏\n'))
 13     if choice==1:
 14         print('欢迎进入武器库:\n')
 15         weapons=[['饮血剑',100],['屠龙刀',300],['破晓',600],['末世',400],['碎星锤',500]]
 16         for weapon in weapons:
 17             print(weapons)
 18             #提示输入要购买的武器
 19             weaponname=input('请输入要购买的武器:')
 20             #判断:原来没有买过武器
 21             if weaponname not in weapon_list:
 22             #判断: 输入的武器名是否在武器库
 23                 for weapon in weapons:
 24                     if weaponname == weapon[0]:
 25                         if coins>=weapon[1]:
 26                             coins-=weapon[1]
 27                             weapon_list.append(weapon[0])
 28                             print('{}购买{}成功'.format(role,weaponname))
 29                         break
 30                     else:
 31                         print('金币不足,赶快打仗挣金币.')
 32                         break
 33                 else:
 34                     print('输入的武器名有误.')
 35             else:
 36                 print('已经拥有此武器')
 37                                        
 38     elif choice==2:
 39         print('正在进入战场…………………………')
 40         if len(weapon_list)>0:
 41             print('{}拥有的武器如下:'.format(role))
 42             for weapon in weapon_list:
 43                 print(weapon)
 44                 
 45             while True:
 46                 weaponname=input('请选择:')
 47                 if weaponname in weapon_list:
 48                     #进入战争状态
 49                     ran1=random.randint(1,20)
 50                     ran2=random.randint(1,20)
 51                     if ran1>ran2:
 52                         print('此局对战胜利')
 53                     elif ran1<ran2:
 54                         print('此局对战失败')
 55                         coins+=200
 56                         print('金币:',coins)
 57                     else:
 58                         print('此局对战平局')
 59                     break
 60                 else:
 61                     print('选择的武器不在武器库,重新选择')
 62         else:
 63             print('目前没有武器不能打仗,请前去购买')
 64                 
 65     elif choice==3:
 66         #删除武器
 67         if len(weapon_list)>0:
 68             print('{}拥有的武器如下:'.format(role))
 69             for weapon in weapon_list:
 70                 print(weapon)
 71             print('选择要删除的武器………………')
 72             while True:
 73                 weaponname=input('输入要删除的武器名:')
 74                 if weaponname in weapon_list:
 75                     #删除武器
 76                     weapon_list.remove(weaponname)
 77                     #归还金币
 78                     for weapon in weapons:
 79                         if weaponname==weapon[0]:
 80                             coins+=weapon[1]
 81                             break
 82                     break
 83                 else:
 84                     print('武器名输入有误,重新输入')
 85         else:
 86             print('没有武器 ,你删除个屁')
 87             
 88     elif choice==4:
 89         #查看自己武器库
 90         print('{}拥有的武器如下:'.format(role))
 91         for weapon in weapon_list:
 92             print(weapon)
 93         print('金币总数:',coins)
 94         
 95     elif choice==5:
 96         anwer=input('确定要离开王者荣耀吗(yes/no)')
 97         if anwer=='yes':
 98             break
 99     else:
100         print('输入错误,请重新选择')

 

posted @ 2021-08-25 22:13  admin-xiaoli  阅读(70)  评论(0编辑  收藏  举报