第一块 0基础入门Python Day3(57-88)

python列表/元组/字典/集合

单词表3

ascending 上升的
ascending order 上升序列
descending 下降的
sort 排序
reverse 反转,颠倒
discard 移除
intersection 交叉
union 联合
symmetric 对称

list列表 [ ]类似其他语言的数组,可变(各种组合)list.append(‘末尾追加’),extend(‘末尾追加拆分一个个添加’),insert(2,‘在第一和二中间插入’),max,min,sorted(排序,默认升序,reverse = True)
tuple元组()类似列表,元素内容不可修改,只读属性(1)的class是int,而不是tuple,所以一个元素的话必须加逗号,不能修改等操作,只能查,可以用下标查询,切片
dictionary{}以key:value形式,一个个成对的元素dict()强制转换,dict[key]=value,如有同名key,是修改,如没有是增加,key在字典中是唯一的
set集合关键字,无序的不重复的元素不重复特点,只能用set()创建空集合
  • list for循环查找某字符串,还有delete的del语法
names = ['zhangsanf','dsdfixne','df ','df ','xinjie','dfllllsdf']
for name in names:
	if name == 'xinjie':
		print('find it ')
		break
	else:
		print(name)

names = ['xinjie1','xinjie2','xinjie3','xinjie4','xinjie5','xinjie10']
leng=len(names)
i = 0
while i <leng:
	if 'xinjie2' in names[i] or 'xinjie1' in names[i]:
		del names[i]
		leng -=1  # ['xinjie2', 'xinjie3', 'xinjie4', 'xinjie5']
		#i -=1  #['xinjie3', 'xinjie4', 'xinjie5']
		#continue 也可用这个忽略下方的+1操作
		# 如果想精确匹配,用==,其他用in,in是包含关系
	i+=1
print(names)
  • 字符串存在切片操作[3:9]等
  • 列表也支持切片操作:
    -正向切片:也能带步长[::2]
    -反向切片:[-1::-2]也能成功
list_love = []
while True:
	name = input('输入你心爱的名字:')
	if name =='quit':
		break
	list_love.append(name)
print(list_love)
you_love=['java','python']
list_love.extend(you_love)  # 列表合并,也可以用+符号合并
num = [1,9,10,23,44,123,902,333,21,45,69,944,100,12]
for i in range(len(num)):
	for j in range(i+1,len(num)):
		if num[i]>num[j]:
			num[i],num[j]=num[j],num[i]
		else:
			pass
print(num)
  • 列表中的元素可以有列表/整型等.
result = [3,2] in [1,2,[3,2,1],4]  #False
len[1,2,[3,2,1],4]  # 4

#从range列表中取出多个单值,用list合并成一个列表 
print(list(range(1,100,3))) 
# 如果把字符串用list会拆分成一个单字符的列表,
# 整型不是迭代(能用for in循环的内容,就是可迭代的)

列表list参考https://www.runoob.com/python3/python3-list.html

字符串函数列表函数
split,strip()等append(),extend(),insert(),del,remove(),pop(),clear()
列表自身函数特点
append加在列表的末尾
extend()等同于+,拼接两个列表
insert()插入元素,(参数,元素),把元素插入在参数位前
deldel.列表
remove(‘元素’),移除第一个出现的元素,未找到返回异常,找到返回None
pop()不传参数也可以,删除最后一个元素,栈的先进后出法,也可以指定index(下标)去删除,返回值为删除的元素
clear()清空列表
reverse()翻转会改列表顺序
sort()排序,默认为升序,系统函数sorted(list)和自身list.sort(reverse=True,False)
count()统计次数

队列:FIFO先进先出
栈:FILO先进后出

  # sort跟sorted
a =[1,2,7,9,5,[3,2,1],4]
a.pop(5)
a2 = sorted(a,reverse=True)
a.sort(reverse=False)
print(a)
print(a2)
# [1, 2, 4, 5, 7, 9]
# [9, 7, 5, 4, 2, 1]

王者荣耀文字游戏
https://www.bilibili.com/video/av69060979/?p=69

print('*'*88)
print('\t欢迎来到王者荣耀')
print('*'*88)

role = input('请选择游戏人物:(1.鲁班 2.后弈 3.李白 4.孙尚香 5.貂蝉 6.诸葛亮)')
coins = 1000
hero_list = ['鲁班','后弈','李白','孙尚香','貂蝉','诸葛亮']
weapon_list = []
print('欢迎{}来到王者荣耀,当前金币是{}'.format(role,coins))
while True:
	choice = int(input('请选择:\n1.购买武器\n2.打战\n3.删除武器\n4.查看武器\n5.退出游戏'))
	if choice==1:
		print('欢迎进到武器库:')
		weapons = [['刀',100],['樱花刀',1000],['枪',20000]]
		for weapon in weapons:
			print(weapon[0],weapon[1],sep='  ')
		weaponname = input('请输入要购买的武器名称:')
		if weaponname not in weapon_list:
			for weapon in weapons:
				if weaponname == weapon[0]:
					if coins >=weapon[1]:
						weapon_list.append(weapon[0])
						print('已花费{}购买{}'.format(weapon[1],weapon[0]))
						coins -=weapon[1]
						break
					else:
						print('金币不足,请多赚点再来')
						break
			else:
				print('武器名称有误')
	elif choice==2:
		while 1:
			war = int(input('请输入你要打的怪物次数:(按0键退出)'))
			if war >=1:
				for i in range(1,war+1):
					print('击败第{}个怪物,赚取{}个金币'.format((i+1),(i+1))		
	elif choice==3:
		print('你现在的武器有{},还有{}个金币'.format(weapon_list,coins))
		sell = input('你要删除什么武器:')
		for weapon in weapon_list:
			if sell == weapon:
				weapon_list.remove(sell)
				print('删除成功')
				print('你现在的武器有{},还有{}个金币'.format(weapon_list,coins))
			else:
				break
	elif choice==4:
		print('你现在的武器有{},还有{}个金币'.format(weapon_list,coins))
	elif choice==5:
		answer = input('确定要离开王者荣耀游戏吗(yes\\no)')
		if answer=='yes':
			print('期待下次见面,再见')
			break
		else:
			pass
	else:
		pass
else:
	print('存在错误')		

print('**************全军出击*************')
list = ['dsfa','23','234']
for value in list:
	print(value)
for index,value in enumerate(list):
	print(index,value)
#0 dsfa
#1 23
#2 234

元组tuple参考https://www.runoob.com/python3/python3-tuple.html

-----tuple()----

num = [1,9,10,23,44,123,902,333,21,45,69,944,100,12]
for i in range(len(num)):
	for j in range(i+1,len(num)):
		if num[i]>num[j]:
			num[i],num[j]=num[j],num[i]
		else:
			pass
num2 = tuple(num)
print(num2)  #[]转为()
元组自身函数仅为两种
tuple.count()个数
tuple.index()下标位置
拆包装包
a,b,c = tupletuple = a,b,c
a,b,*c =tupletuple = a,b,c(c为一个列表)

*号,多数据是建[ ],变成单个
*号,单个是拆[ ]成多数据

字典dict参考
https://www.runoob.com/python3/python3-dictionary.html
https://www.liaoxuefeng.com/wiki/1016959663602400/1017104324028448

# 列表可以转为字典,但元素都要成对出现
dic1 = dict((('name','java'),('age',18)))
print(dic1)  # {'name': 'java', 'age': 18}
  • 案例用户注册功能
print('*'*88)
print('请做注册手续以便登陆')
data =[]
while True:
	dict_1 = {}
	usrname = input('请输入你的用户名:')
	password = input('请输入你的密码:')
	re_password = input('请输入你的密码:')
	email = input('请输入你的邮箱:')
	phone = input('请输入你的手机号:')
	if password == re_password:
		dict_1['密码']=password
		dict_1['用户名']=usrname
		dict_1['邮箱']=email
		dict_1['手机号']=phone
		print('注册成功')
		data.append(dict_1)
		break
	else:
		print('两次密码不一致,请重新注册')
print('你的用户名为{},请牢记你的密码,欢迎常来本网'.format(usrname))

列表查元素:根据下标
字典查元素:根据key

dic2 ={'xt':100,'sdf':99,'df':98}
for i in dict2:
	print(i)  #'xt' 'sdf' 'df'
字典自身的函数用法
items().dict2.items()保存列表中,列表均能遍历
valuesdict2.values()保存到列表中
key()dict2.key()保存到列表中
get()按key查找value,内置函数,不会报错,返回None
dict[key]按key查找,如找不到会返回keyError
del dic[‘key’]同列表,删除,如没有会弹KeyError
dict.pop[‘key’]可以删除最后一个key的键值对,返回值为值,pop(key,[,default])---->如果没有这个key值,则返回default的值
popitem()随机删除字典中键值对(一般从末尾删除元素)
dict1.update(dict2)用dict2去加入原dict1,合并操作{}+{}
dict.fromkeys(seq)new_dict=dict.fromkeys(list,10),生成一个以list为key,value为10的字典,如没有10,则用None
  • value条件筛选
dict2 ={'xt':100,'sdf':99,'df':98}
for key,value in dict2.items(): #拆包操作
	if value >90:
		print(key)  # xt\n  sdf\n df\n
print(dic2.values())  # dict_values([100, 99, 98])
print(dic2.items())  # dict_items([('xt', 100), ('sdf', 99), ('df', 98)])
print(dic2.keys())  # dict_keys(['xt', 'sdf', 'df'])
print(98 in dic2.values())  # True

列表/元组/字典总结

  • 集合的不重复特点

集合参考https://www.runoob.com/python3/python3-set.html

s = {2,4,5}#单元素,为集合,键值对是字典
s2 = set(list)#快速为列表去重set()
s2.add(‘添加无序的元素’)# 没有添加顺序,如是一个列表会视为一个整体添加进去
s2.update(t1)#添加无序的元组的元素
remove()有会删除,没有会报KeyError
discard类似remove,但不会报错
pop()随机删除,集合中一般删除第一个元素
clear()清空
(+ *)集合不支持
(-)为差集与.difference(set2)一样
&为交集两者的交集,与.intersection(set2)一样
竖分线是并集,与union(set2)一样
^对称差集,函数为symmetric_difference()

在这里插入图片描述
s1.difference_update(s2),可以简化步骤
=====>s1 = s1.difference(s2)
=====>print(s1)

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

  • type()类型的判断
    isinstance(变量,类型关键字)
    在这里插入图片描述
tuple1 = (9,10,23)
if isinstance(tuple1,tuple)  # True
  • 可变与不可变
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值