1、字符串的join()把列表变成字符串
总结:
列表转换成字符串调用.join()方法,字符串转换成列表方法,调用split()
2、列表不能再循环的时候删除. 因为索引会跟着改变(我们可以将需要删除的想保存到人外一个列表中,然后在删除)
删除姓周的姓名
lst = ["周杰伦", "周润发", "周星星", "马化腾", "周树人"]
# 删除掉姓周的人的信息
del_lst = []
for el in lst:
if el.startswith("周"):
del_lst.append(el)
for el in del_lst:
lst.remove(el)
print(lst)
3、字典也不能直接循环删除.
把要删除的内容记录在列表中. 循环列表. 删除原列表, 字典中的数据
4、fromkeys() 不会对原来的字典产生影响. 产生新字典
5、set集合. 不重复, 无序.
6、想转换成什么.就用什么括起来
类型转换:
元组 => 列表 list(tuple)
列表 => 元组 tuple(list)
list=>str str.join(list)
str=>list str.split()
转换成False的数据:
0,'',None,[],(),{},set() ==> False
7、深浅拷贝
1. 直接赋值. 两个变量指向同一个对象.
lst1 = ["金毛狮王", "紫衫龙王", "白眉鹰王", "青衣服往"]
lst2 = lst1 # 列表, 进行赋值操作. 实际上是引用内存地址的赋值. 内存中此时只有一个列表. 两个变量指向一个列表
lst2.append("杨做事") # 对期中的一个进行操作. 两个都跟着变
print(lst2)
print(lst1)
2. 浅拷贝:只拷贝第一层内容. copy()
3. 深度拷贝: 对象中的所有内容都会被拷贝一份
import copy
copy.deepcopy()
此时拷贝后两边都改变了
解决方法:调用copy模块
# 拷贝比创建对象的过程要快
作业
1、判断水仙花数,一个三位数的三个数字的三次方之和还等于该书本身,则这个数称为水仙数
# 法一:
sum=0
while True:
num = input("请输入一个三位数,输入Q或q退出:")
a = " ".join(num).split(" ")
if num.upper()=="Q":
break
elif len(num) != 3:
print("输入有误,请重新输入一个三位数")
else:
for i in a:
sum=sum+int(i)**3
if sum==int(num):
print("这是个水仙花数")
else:
print("这只是个普通数")
# 法二:
while True:
num = input("请输入一个三位数,输入Q或q退出:")
if num.upper() == "Q":
break
else:
sum = int(num[0]) ** 3 + int(num[1]) ** 3 + int(num[2]) ** 3
if len(num) != 3:
print("输入有误,请重新输入一个三位数")
elif sum==int(num):
print("这是个水仙数")
else:
print("这不是水仙数")
2、将两个数字互换
a=10
b=15
a,b=b,a
print(a,b)
3、数列两个两个比大小,将最大的数字排列到最右边
list=[22,33,44,1,5,9,6]
print(len(list))
for x in range(len(list)-1):
if list[x]>list[x+1]:
list[x],list[x+1]=list[x+1],list[x]
else:
continue
print(list)
4、在第三题的基础上两个两个比大小然后按大小顺序排序
# 法一
list=[22,33,44,1,5,9,6]
print(len(list))
count=len(list)
while count>1:
for x in range(count-1):
if list[x]>list[x+1]:
list[x],list[x+1]=list[x+1],list[x]
else:
continue
count=count-1
print(list)
# 法二
for j in range(len(list)):
i=0
while i < len(list)-1:
if list[i]>list[i+1]:
list[i],list[i+1]=list[i+1],list[i]
i+=1
print(list)
5、利用集合完成彩票的36选7
from random import randint # 导入生成随机数的模块 s=set() while len(s)<7: # 当集合长度小于7时我们就向集合内添加数字 s.add(randint(1,36)) print(s)