python笔记7—day7

知识点

1、基础数据类型汇总补充

1.1、str和int数据类型的没有学过的操作方法需要自己去找资料学习

1.2、 list:在循环一个列表时,最好不要删除列表中的元素,这样会使索引发生改变,从而报错

lis = [11,22,33,44,55]
for i in range(len(lis)):
    print(i)       # i = 0              i = 1               i = 2
    del lis[i]
    print(lis)  #  [11,22,33,44,55]   [22, 44, 55]          [22, 44]

输出索引为偶数的元素

#第一种
lis = lis[::2]
print(lis)

#第二种
l1 = []
for i in lis:
    if lis.index(i) % 2 == 0:
        l1.append(i)
lis = l1
print(lis)
lis = [11,22,33,44,55]
for i in range(len(lis)-1,-1,-1):
    if i % 2 == 1:
        print(i)
        del lis[i]
        print(lis)
print(lis)

1.3、元祖  如果元祖里面只有一个元素且不加‘,’那此元素是什么类型,就是什么类型。

tu1 = (1)
tu2 = (1,)
print(tu1,type(tu1))
print(tu2,type(tu2))
tu1
= ([1]) tu2 = ([1],) print(tu1,type(tu1)) print(tu2,type(tu2))

1.4、字典的操作方法也要自学

#创建一个dic
dic = dict.fromkeys([1,2,3],'春哥')
print(dic)
dic = dict.fromkeys([1,2,3],[])
print(dic)  # {1: [], 2: [], 3: []}
dic[1].append('袁姐')
print(dic)
dic[2].extend('二哥')
print(dic)
#删除带'k'的键,值也删掉
#方法一
dic = {'k1':'v1','k2':'v2','a3':'v3'}
dic1 = {}
for i in dic:
    if 'k' not in i:
        print(i)
        dic1.setdefault(i,dic[i])
dic = dic1
print(dic)

#方法二
dic = {'k1':'v1','k2':'v2','a3':'v3'}
l = []
for i in dic:
    if 'k' in i:
        l.append(i)
for i in l:
    del dic[i]
print(dic)

2、集合   可变数据类型,它里面的元素必须是不可变数据类型,无序,不重复

2.1、集合创建

set1=set({1,2,'barry'})
set2={1,2,'barry'}
print(set1,set2)

2.2、集合的增删查,没有改

2.2.1、增

#add
set1={'alex','liu','xiao','age'}
set1.add('xxx')
print(set1)

#update 迭代增加
set1={'alex','liu','xiao','age'}
set1.update('abcd')
print(set1)

2.2.2、删

#pop 随机删除,有返回值
set1={'alex','liu','xiao','age'}
print(set1.pop())
print(set1)

#remove 按元素去删
set1={'alex','liu','xiao','age'}
set1.remove('alex')
print(set1)

#clear 删除集合里的所有元素
set1={'alex','liu','xiao','age'}
set1.clear()
print(set1)

#del 删除整个集合
set1={'alex','liu','xiao','age'}
del set1
print(set1)

2.2.3、查

set1={'alex','liu','xiao','age'}
for i in set1:
    print(i)

2.2.4、交集

#交集用 & 或者 intersection
set1={1,2,3,4,5}
set2={4,5,6,7,8}
set3=set1 & set2
print(set3)
print(set1.intersection(set2))

2.2.5、并集

#并集用 | 或者 union
set1={1,2,3,4,5}
set2={4,5,6,7,8}
print(set1 | set2)
print(set1.union(set2))

2.2.6、反交集

#反交集用 ^ 或者symmetric_difference
set1={1,2,3,4,5}
set2={4,5,6,7,8}
print(set1 ^ set2)
print(set1.symmetric_difference(set2))

2.2.7、差集,就是独有的

#差集用 - 或者 difference
set1={1,2,3,4,5}
set2={4,5,6,7,8}
print(set1 - set2)#结果为{1, 2, 3}
print(set1.difference(set2))

2.2.8、子集与超集

#子集用 < 或者 issubset
#超集用 > 或者 issuperset
set1={1,2,3,4,5}
set2={1,2,3,4,5,6,7,8}
print(set1 < set2)
print(set1.issubset(set2))#set1是set2的子集

print(set2 > set1)
print(set2.issuperset(set1))#set2是set1的超集

2.2.9、去重

li = [1,2,33,33,2,1,4,5,6,6]
set1 = set(li)
print(set1)
li = list(set1)
print(li)

2.2.10、forzenset

#forzenset 不可变数据类型,让集合变成不可变类型,不能增加修改,只能查
set1={1,2}
print(set1,type(set1))#结果为{1, 2} <class 'set'>
s=frozenset('xiao')
print(s,type(s))#结果为frozenset({'a', 'x', 'i', 'o'}) <class 'frozenset'>

3、深浅copy

#浅拷贝  拷贝出来的列表第一层与原来是不同的内存地址,第二层指向原来的地址
#用copy和:来拷贝
l1 =[1,2,3]
l2=l1.copy()
print(l1,l2)#结果为[1, 2, 3] [1, 2, 3]
l1[0]='a'
print(l1,l2)#结果为['a', 2, 3] [1, 2, 3]

l1=[1,2,3]
l2=l1[:]
print(l1,l2)#结果为[1, 2, 3] [1, 2, 3]

l1=[1,2,3,['a','b',1],'c']
l2=l1.copy()
print(l1,l2)#结果为[1, 2, 3, ['a', 'b', 1], 'c'] [1, 2, 3, ['a', 'b', 1], 'c']
l1[3].append('xiao')
print(l1,l2)#结果为[1, 2, 3, ['a', 'b', 1, 'xiao'], 'c'] [1, 2, 3, ['a', 'b', 1, 'xiao'], 'c']
l1[1]='xiu'
print(l1,l2)#结果为[1, 'xiu', 3, ['a', 'b', 1, 'xiao'], 'c'] [1, 2, 3, ['a', 'b', 1, 'xiao'], 'c']
#深拷贝 拷贝所有内容. 包括内部的所有,形成一个新的对象,虽然与之前的值和内容一模一样,但是它们完完全全的两个对象
import copy
l1=[1,2,3,['a','b',1],'c']
l2=copy.deepcopy(l1)
print(l1,l2)#结果为[1, 2, 3, ['a', 'b', 1], 'c'] [1, 2, 3, ['a', 'b', 1], 'c']
l1[0]='a'
l1[3][0]=2
print(l1,l2)#结果为['a', 2, 3, [2, 'b', 1], 'c'] [1, 2, 3, ['a', 'b', 1], 'c']

 

转载于:https://www.cnblogs.com/xiao-le/p/11384278.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值