day 7 - 1 集合、copy及基础数据类型汇总
集合:{},可变的数据类型,他里面的元素必须是不可变的数据类型,无序,不重复。(不重要)
集合的书写
set1 = set({1,2,3})
#set2 = {1,2,3,[2,3],{'name':'alex'}} #错的
print(set1)
#print(set2)
set = {'alex','wusir','ritian','egon','barry'}
增 add update
set.add("女神")
print(set)
set.add("abc")
print(set)
set.update("abc")
print(set)
删 pop remove clear del
set.pop() #随机删除
print(set.pop())
print(set) set.remove('alex') #按元素删除
print(set) set.remove('alex2')
print(set) set.clear() #清空列表 set()
print(set) del set #删除字典
print(set)
查 for
for i in set:
print(i)
交集 & intersection
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
set3 = set1 & set2
print(set3) # {4, 5}
print(set1.intersection(set2)) # {4, 5}
并集 | union
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 | set2) # {1, 2, 3, 4, 5, 6, 7,8}
print(set2.union(set1)) # {1, 2, 3, 4, 5, 6, 7}
反交集 ^ symmetric_difference
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 ^ set2) # {1, 2, 3, 6, 7, 8}
print(set1.symmetric_difference(set2)) # {1, 2, 3, 6, 7, 8}
差集 - difference
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
print(set1 - set2) # {1, 2, 3} set1独有的
print(set2 - set1)
print(set1.difference(set2)) # {1, 2, 3}
子集 < issubset
超集 > issuperset
set1 = {1,2,3,}
set2 = {1,2,3,4,5,6}
print(set1 < set2)
print(set1.issubset(set2)) # 这两个相同,都是说明set1是set2子集。
print(set2 > set1)
print(set2.issuperset(set1)) # 这两个相同,都是说明set2是set1超集。
面试题
#去重
li = [1,2,33,33,2,1,4,5,6,6] set1 = set(li)
print(set1) li = list(set1)
print(li)
让集合变为不可变类型 frozenset 冻结
s1 = {1,2,3}
print(s1,type(s1))
#让集合变为不可变类型 frozenset 冻结
s = frozenset('barry')
print(s,type(s))
#不可变类型只可以查
for i in s:
print(i)
copy
赋值运算
l1 = [1,2,3]
l2 = l1
l1.append('a')
print(l1,l2) [1, 2, 3, 'a'] [1, 2, 3, 'a']
运用 copy 赋值
l1 = [1,2,3]
l2 = l1.copy()
print(l1,l2)
print(id(l1),id(l2))
l2.append('a')
print(l1,l2)
copy 赋值与数组
#第一组
l1 = [1,2,[4,5,6],3]
l2 = l1.copy()
print(l1,id(l1))
print(l2,id(l2)) #第二组
l1.append('a')
print(l1,l2) #第三组
l1[2].append('a')
print(l1,l2)
print(id(l1[2]))
print(id(l2[2]))
#第一组
[1, 2, [4, 5, 6], 3] 2371695834312
[1, 2, [4, 5, 6], 3] 2371695834440 #第二组
[1, 2, [4, 5, 6], 3, 'a'] [1, 2, [4, 5, 6], 3] #第三组
[1, 2, [4, 5, 6, 'a'], 3, 'a'] [1, 2, [4, 5, 6, 'a'], 3]
2371695834184
2371695834184
copy 赋值与数组(2)
l1 = [1,[1],2,3,4]
l2 = l1[:] #第一组
l1[1].append('a')
#l2 的结果是什么?
print(l2) #第二组
print(l1,id(l1))
print(l2,id(l2))
print(l1[1] is l2[1])
#第一组
[1, [1, 'a'], 2, 3, 4] #第二组
[1, [1], 2, 3, 4] 2179834995912
[1, [1], 2, 3, 4] 2179834996040
True
通过定义 copy 赋值
import copy #定义 copy
l1 = [1,2,[4,5,6],3]
l2 = copys.deepcopy(l1) #第一组
print(l1,id(l1))
print(l2,id(l2)) #第二组
l1[2].append('a')
print(l1,l2)
#第一组
[1, 2, [4, 5, 6], 3] 1651493850184
[1, 2, [4, 5, 6], 3] 1651493850696 #第二组
[1, 2, [4, 5, 6, 'a'], 3] [1, 2, [4, 5, 6], 3]
index 与 enumerate 用法
打印序号与值
li = ['alex','taibai','wusir','egon']
for i in li:
print(li.index(i),i) for index,i in enumerate(li,1):
print(index,i)
基础数据类型汇总
list
列表中元素的删除过程
当每次列表中有元素被删除,则列表的原始下标发生变化
range 的值并不会跟随列表的变化而变化
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]
0
[22, 33, 44, 55]
1
[22, 44, 55]
2
[22, 44]
3
Traceback (most recent call last):
File "E:/py/day7-1.py", line 4, in <module>
del lis[i]
IndexError: list assignment index out of range
删除数组中的奇数位
lis = [11,22,33,44,55] #方法一
lis = lis[::2]
print(lis) #方法二
l1 = []
for i in lis:
if lis.index(i) % 2 == 0:
l1.append(i)
lis = l1
print(lis) #方法三
for i in range(len(lis)-1,-1,-1):
if i % 2 == 1:
print(i)
del lis[i]
print(lis)
print(lis)
字典的灵活用法
dic = dict.fromkeys([1,2,3],'春哥')
print(dic)
dic = dict.fromkeys([1,2,3],[])
#dic = dict.fromkeys([1,2,3],['ysg'])
print(dic) # {1: [], 2: [], 3: []}
dic[1].append('袁姐')
print(dic)
dic[2].extend('二哥')
print(dic)
数组的灵活用法
l1 = []
l2 = l1
l3 = l1
l3.append('a')
print(l1,l2,l3)
不打印含有 k 的键值对
dic = {'k1':'v1','k2':'v2','a3':'v3'}
#方法一:字典
dic1 = {}
for i in dic:
if 'k' not in i:
dic1.setdefault(i,dic[i])
dic = dic1
print(dic)
#方法二:数组
l = []
for i in dic:
if 'k' in i:
l.append(i)
for i in l:
del dic[i]
print(dic)
可以转化成 bool 值
0 '' [] () {} set()
元祖:如果元祖里面只有一个元素且不加逗号,那此元素是什么类型,该元祖就是什么类型。
#第一组
tu1 = (1)
tu2 = (1,)
print(tu1,type(tu1))
print(tu2,type(tu2)) #第二组
tu1 = ([1])
tu2 = ([1],)
print(tu1,type(tu1))
print(tu2,type(tu2)) #元祖的灵活用法
dic = dict.fromkeys([1,2,3,],3)
dic[1] = 4
print(dic)
#第一组
1 <class 'int'>
(1,) <class 'tuple'> #第二组
[1] <class 'list'>
([1],) <class 'tuple'> #元祖的灵活用法
{1: 4, 2: 3, 3: 3}
day 7 - 1 集合、copy及基础数据类型汇总的更多相关文章
- 基础数据类型汇总补充;集合set ;深浅copy
首先回顾: 小数据池:int -5~256str 特殊字符,*数字20 ascii : 8位 1字节 表示1个字符unicode 32位 4个字节 表示一个字符utf- 8 1个英文 8位,1个字节 ...
- 基础数据类型汇总补充,python集合与深浅拷贝
一.基础数据类型汇总补充 1.查看str所有方法方式 2.列表:在循环中删除元素,易出错或报错(飘红) lis = [11,22,33,44,55] # for i in range(len(lis) ...
- python 基础数据类型汇总
数据类型小结(各数据类型常用操作) 一.数字/整型int int()强行转化数字 二.bool类型False&True bool()强行转化布尔类型. 0,None,及各个空的字符类型为Fal ...
- python基础数据类型汇总
list和dict 在循环一个列表和字典时,最好不要删除其中的元素,这样会使索引发生改变,从而报错! lis = [11, 22, 33, 44, 55] for i in range(len(lis ...
- Python基础数据类型之集合以及其他和深浅copy
一.基础数据类型汇总补充 list 在循环一个列表时,最好不要删除列表中的元素,这样会使索引发生改变,从而报错(可以从后向前循环删除,这样不会改变未删元素的索引). 错误示范: lis = [,,, ...
- day7 基础数据类型&集合&深浅拷贝
基础数据类型汇总: #!/usr/bin/env python # -*- coding:utf-8 -*- ''' str int ''' # str s = ' a' print(s.isspac ...
- 二: python基础数据类型(int,
一.什么是数据类型?2018-12-20 20:57:3õ # (3) num = 0 while num < 10: num += 1 if num == 7: num += 1 # 7执 ...
- Python——基础数据类型(补充)
1.基础数据类型汇总补充 (1)小数据池: 为了节省空间,数字和字符串有,其他的没有[了解] 数字:-5---256之间的数字共用一个内存地址 #(1)i1 = i2 id(i1) == id ...
- 基础数据类型的坑和集合及深浅copy
一.基础数据类型的坑: 元组: 如果一个元组中,只有一个元素,且没有逗号,则该"元组"与里面的数据的类型相同. # 只有一个数据,且没有逗号的情况: print(tu1,type( ...
随机推荐
- 64位win8.1系统 运行 32位程序,文件夹路径是中文遇到问题
今天有一位用户向我反应软件使用遇到问题. 用户使用的是64位win8.1系统,之前有很多用户使用64位的win8.1系统没遇到过问题. 远程协助了一下,差不多15分钟我试了几个办法没解决问题. 最后我 ...
- testng优化:失败重跑,extentReport+appium用例失败截图,测试报告发邮件
生成的单html方便jenkins集成发邮件,= = 构建失败发邮件 参考:https://blog.csdn.net/galen2016/article/details/77975965 步骤: 1 ...
- maven pom添加本地jar,不提交私库
<dependency> <groupId>taobao-sdk</groupId> <artifactId>taobaosdk</artifac ...
- sqlserver Timeout 时间已到。在操作完成之前超时时间已过或服务器未响应
随着数据库数据的不断增大,查询时间也随之增长.今天在之前一个项目中执行数据库查询超过30秒就报“Timeout 时间已到.在操作完成之前超时时间已过或服务器未响应.”了,网上找了些文章,是在.co ...
- Luogu P4011 孤岛营救问题
题目链接 \(Click\) \(Here\) 注意坑点:一个地方可以有多把钥匙. 被卡了一会,调出来发现忘了取出来实际的数字,直接把二进制位或上去了\(TwT\),其他的就是套路的分层图最短路.不算 ...
- mysql5.6 主从同步配置
一:配置前说明 在centos 6环境下配置 mysql 5.6主从同步 准备两台测试的虚拟机,2台虚拟机上都安装mysql软件,并开启mysql服务主master : 192.168.1.110从s ...
- 基本类型(2):oracle中有4个大对象(lobs)类型可用,分别是blob,clob,bfile,nclob。
1)blob:二进制lob,为二进制数据,最长可达4GB,存贮在数据库中. 2)clob:字符lob,字符数据,最长可以达到4GB,存贮在数据库中. 3)bfile:二进制文件;存贮在数据库之外的只读 ...
- Python编程快速上手-让繁琐工作自动化-第二章习题及其答案
Python编程快速上手-让繁琐工作自动化-第二章习题及其答案 1.布尔数据类型的两个值是什么?如何拼写? 答:True和False,使用大写的T和大写的F,其他字母是小写. 2.3个布尔操作符是什么 ...
- MySQL数据库基础学习
MySQL基础知识 ----------- MySQL数据库简介 内存:一断电数据就没有了---------数据库:可以实现数据的持久化存储,有完整的管理系统管理,方便查询--------- DB:数 ...
- Python中字符串的操作
字符串的基本详情 用单引号或者双引号包含的内容 不支持直接在内存中修改 可支持索引.切片.成员检查.长度查看 字符串赋值到变量 str1 = 'hello world' 字符串打印查看 str1 = ...