python学习之set集合和深浅拷贝

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yunson_Liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值