PYDay5- 数据类型set、三元运算、函数
1、set
set集合,是一个无序且不重复的元素集合
class set(object):
"""
set() -> new empty set object
set(iterable) -> new set object Build an unordered collection of unique elements.
"""
def add(self, *args, **kwargs): # real signature unknown
"""
Add an element to a set,添加元素 This has no effect if the element is already present.
"""
pass def clear(self, *args, **kwargs): # real signature unknown
""" Remove all elements from this set. 清除内容"""
pass def copy(self, *args, **kwargs): # real signature unknown
""" Return a shallow copy of a set. 浅拷贝 """
pass def difference(self, *args, **kwargs): # real signature unknown
"""
Return the difference of two or more sets as a new set. A中存在,B中不存在 (i.e. all elements that are in this set but not the others.)
"""
pass def difference_update(self, *args, **kwargs): # real signature unknown
""" Remove all elements of another set from this set. 从当前集合中删除和B中相同的元素"""
pass def discard(self, *args, **kwargs): # real signature unknown
"""
Remove an element from a set if it is a member. If the element is not a member, do nothing. 移除指定元素,不存在不保错
"""
pass def intersection(self, *args, **kwargs): # real signature unknown
"""
Return the intersection of two sets as a new set. 交集 (i.e. all elements that are in both sets.)
"""
pass def intersection_update(self, *args, **kwargs): # real signature unknown
""" Update a set with the intersection of itself and another. 取交集并更更新到A中 """
pass def isdisjoint(self, *args, **kwargs): # real signature unknown
""" Return True if two sets have a null intersection. 如果没有交集,返回True,否则返回False"""
pass def issubset(self, *args, **kwargs): # real signature unknown
""" Report whether another set contains this set. 是否是子序列"""
pass def issuperset(self, *args, **kwargs): # real signature unknown
""" Report whether this set contains another set. 是否是父序列"""
pass def pop(self, *args, **kwargs): # real signature unknown
"""
Remove and return an arbitrary set element.
Raises KeyError if the set is empty. 移除元素
"""
pass def remove(self, *args, **kwargs): # real signature unknown
"""
Remove an element from a set; it must be a member. If the element is not a member, raise a KeyError. 移除指定元素,不存在保错
"""
pass def symmetric_difference(self, *args, **kwargs): # real signature unknown
"""
Return the symmetric difference of two sets as a new set. 对称差集 (i.e. all elements that are in exactly one of the sets.)
"""
pass def symmetric_difference_update(self, *args, **kwargs): # real signature unknown
""" Update a set with the symmetric difference of itself and another. 对称差集,并更新到a中 """
pass def union(self, *args, **kwargs): # real signature unknown
"""
Return the union of sets as a new set. 并集 (i.e. all elements that are in either set.)
"""
pass def update(self, *args, **kwargs): # real signature unknown
""" Update a set with the union of itself and others. 更新 """
pass
常用方法
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# se = {11,22,33,44}
# se.add(55)
# print(se)
# se.discard(66)
# #se.remove(66)
# print(se)
# bf = {21,22,23,25}
#
# #取se bf的交集
# ret1 = se.intersection(bf)
# #取交集并更新se
# se.intersection_update(bf)
#
# print(ret1)
# print(se)
#
# ret2 = se.issubset(bf)
# ret3 = se.issuperset(bf)
# print(ret2)
# print(ret3)
#
# bf.pop()
# print(bf) se = {11,22,33,44}
be = {11,22,77,55}
r1 = se.difference(be)
r2 = be.difference(se)
print(r1)
print(r2)
ret = se.symmetric_difference(be)
print(ret)
# se.symmetric_difference_update(be)
# print(se)
ret = se.union(be)
print(ret)
print(se)
se.update([21])
print(se)
示例代码1
1.1习题:
old_dict
=
{
"#1"
:{
'hostname'
:c1,
'cpu_count'
:
2
,
'mem_capicity'
:
80
},
"#2"
:{
'hostname'
:c1,
'cpu_count'
:
2
,
'mem_capicity'
:
80
}
"#3"
:{
'hostname'
:c1,
'cpu_count'
:
2
,
'mem_capicity'
:
80
}
}
new_dict
=
{
"#1"
:{
'hostname'
:c1,
'cpu_count'
:
2
,
'mem_capicity'
:
800
},
"#3"
:{
'hostname'
:c1,
'cpu_count'
:
2
,
'mem_capicity'
:
80
}
"#4"
:{
'hostname'
:c2,
'cpu_count'
:
2
,
'mem_capicity'
:
80
}
}
#!/usr/bin/env python
# -*- coding:utf-8 -*-
old_dict = {
"#1":{ 'hostname':c1, 'cpu_count': 2, 'mem_capicity': 80 },
"#2":{ 'hostname':c1, 'cpu_count': 2, 'mem_capicity': 80 }
"#3":{ 'hostname':c1, 'cpu_count': 2, 'mem_capicity': 80 }
}
new_dict = {
"#1":{ 'hostname':c1, 'cpu_count': 2, 'mem_capicity': 800 },
"#3":{ 'hostname':c1, 'cpu_count': 2, 'mem_capicity': 80 }
"#4":{ 'hostname':c2, 'cpu_count': 2, 'mem_capicity': 80 }
}
old_keys = old_dict.keys()
new_keys = new_dict.keys()
old_set = set(old_keys)
new_set = set (new_keys)
del_set = old_set.difference(new_set)
add_set = new_set.difference(old_set)
update_set = old_set.intersection(new_set)
部分代码
2、深浅拷贝
2.1 数字和字符串:深浅拷贝、赋值地址都是一样的
2.2 其他(列表、字典、元组):潜拷贝,只copy 第一层;深拷贝,除底层外 其他都拷贝
#!/usr/bin/env python
# -*- coding:utf-8 -*-
def email():
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
ret = True
try:
msg = MIMEText('邮件内容 test mail 2017-1-27 09:16:14 2017年1月27日11:16:37 \n 2017年1月28日06:47:51', 'plain', 'utf-8')
msg['From'] = formataddr(["john li", 'lynctest02@tasly.com'])
msg['To'] = formataddr(["hi hi ", 'lynctest01@tasly.com'])
msg['Subject'] = "主题2017年1月28日06:47:25" server = smtplib.SMTP("mail.tasly.com", 25)
server.login("lynctest02", "邮箱密码")
server.sendmail('lynctest02@tasly.com', ['lynctest01@tasly.com', ], msg.as_string())
server.quit()
except:
ret = False
return ret
i1 = email()
print(i1)
mail 函数示例
6、全局变量与局部变量
局部变量:小写,仅在代码块内生效
全局变量:大写,可以被函数修改,若需修改全局变量加关键字global
7、 try except
try:
c1
except:
c2
#若c1执行错误,则执行c2
8、作业:
1、简述普通参数、指定参数、默认参数、动态参数的区别
A:参见5.3
2、写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数
def f1(arg):
al_num = 0
spance_num = 0
digit_num = 0
other_num = 0
for i in arg:
if i.isdigit():
digit_num += 1
elif i.isspace():
spance_num += 1
elif i.isalpha():
al_num += 1
else:
other_num += 1
return (al_num,spance_num,digit_num,other_num)
r = f1("11134 t gfsfgf adf adfa dasf**")
print(r)
3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
def obj_len(arg):
#如果是字符串、元组、列表
if isinstance(arg,str) or isinstance(arg,tuple):
if len(arg)>5:
return True
else:
return False
else:
return None temp = {1:1,2:1}
ret = obj_len(temp) print(ret)
4、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。
def has_space(args):
ret = True
for c in args:
if c.isspace():
ret =False
break
return ret result = has_space("1123asdfdf")
print(result)
5、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
def f2(args):
if len(args)>2:
return args[0:2]
else:
return args
li = [12,34,56]
print(f2(li))
6、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
def f4(arg):
ret = []
for i in range(len(arg)-1):
if i % 2 == 1:
ret.append(arg[i])
else:
pass
return ret li = [11,22,33,44,55]
r = f4(li)
print(li)
print(r)
7、写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
dic
=
{
"k1"
:
"v1v1"
,
"k2"
: [
11
,
22
,
33
,
44
]}
PS:字典中的value只能是字符串或列表
def f5(arg):
ret ={}
for k,v in arg.items():
if len(v) > 2:
ret[k] = v[0:2]
else:
ret[k] = v
return ret dic = {"k1": "v1v1", "k2": [11, 22, 33, 44],"k3":""}
r = f5(dic)
print(r)
def f6(arg):
for k,v in arg.items():
if len(v) > 2:
arg[k] = v[0:2]
else:
arg[k] = v dic = {"k1": "v1v1", "k2": [11, 22, 33, 44],"k3":""}
f6(dic)
print(dic)
PYDay5- 数据类型set、三元运算、函数的更多相关文章
- JavaScript---js语法,数据类型及方法, 数组及方法,JSON对象及方法,日期Date及方法,正则及方法,数据类型转换,运算符, 控制流程(三元运算),函数(匿名函数,自调用函数)
day46 一丶javascript介绍 JavaScript的基础分为三个 1.ECMAScript:JavaScript的语法标准.包括变量,表达式,运算符,函数,if语句,for语句 ...
- Python之路第三天,基础(3)-set,函数,内置函数,文件,三元运算,lambda
set集合 集合是一个无序的,不重复的元素集合. 集合的创建: name_set = {'tom','jerry','alex','rose'} 或 name_set = set(['tom','je ...
- 第三天 函数 三元运算 lambda表达式 内置函数 文件操作
面向过程: 直接一行一行写代码,遇到重复的内容复制黏贴. 不利于代码阅读 代码没有复用 面向对象 将代码块定义为函数,以后直接调用函数 增强了复用性 函数的定义方法 def 函数名(传递参数): 函数 ...
- bytes数据类型和字符串的编码解码,三元运算,进制互换
三元运算 如果这个条件成立就存这个值,如果那个条件成立就存那个值. 进制 bytes类型,字节数据类型也就是二进制类型,这个是python3专有数据类型,在python2里跟字符串是一个类型,也就是p ...
- day4 内置函数 迭代器&生成器 yield总结 三元运算 闭包
内置函数: 内置函数 # abs()返回一个数字的绝对值.如果给出复数,返回值就是该复数的模. b = -100 print(b) print(abs(b)) # all() 所有为真才为真,只要有一 ...
- python基础-3 集合 三元运算 深浅拷贝 函数 Python作用域
上节课总结 1 运算符 in 字符串 判断 : “hello” in "asdasfhelloasdfsadf" 列表元素判断:"li" in ['li', ...
- python基础(三元运算+深浅拷贝+函数参数)
三元运算 三元运算,又称三目运算,主要作用是减少代码量,是对简单的条件语句的缩写. 书写格式: result = 值1 if 条件 else 值2 即如果条件成立,则将值1赋给result变量,如果不 ...
- Python全栈之路3--set集合--三元运算--深浅拷贝--初识函数
一.上节课的重点回顾: 1.类名加括号其实就是执行类的__init__方法: 2.int a.创建方式 n1 = 123 #根据int类创建了一个对象 n2 = int(123) #根据int类创建一 ...
- python_way,day3 集合、函数、三元运算、lambda、python的内置函数、字符转换、文件处理
python_way,day3 一.集合 二.函数 三.三元运算 四.lambda 五.python的内置函数 六.字符转换 七.文件处理 一.集合: 1.集合的特性: 特性:无序,不重复的序列 如果 ...
- python 匿名函数与三元运算
匿名函数 匿名函数就是不需要显示式的指定函数名 首先看一行代码: def calc(x,y): return x*y print(calc(2,3)) # 换成匿名函数 calc = lambda x ...
随机推荐
- 097 Interleaving String 交错字符串
给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的.例如,给定:s1 = "aabcc",s2 = "dbbca",当 s ...
- python学习之IO:
输入输出兼程IO操作,有同步(速度不匹配时四等)和异步(轮询和消息通知,复杂而高效) 一 文件操作函数: 文件打开:f=open("文件路径“,“操作类型 r/rb/w/a”,"编 ...
- Java之instanceof
class Base{ int x = 1; static int y = 2; String name(){ return "mother" ...
- Objective-C中的命名前缀说明
http://www.cnblogs.com/dhui69/p/6410134.html __kindof __kindof 这修饰符还是很实用的,解决了一个长期以来的小痛点,拿原来的 UITable ...
- Luogu P4593 [TJOI2018]教科书般的亵渎
亵渎终于离开标准了,然而铺场快攻也变少了 给一个大力枚举(无任何性质)+艹出自然数幂和的方法,但是复杂度极限是\(O(k^4)\)的,不过跑的好快233 首先简单数学分析可以得出\(k=m+1\),因 ...
- react中的setState的使用和深入理解
前端框架从MVC过渡到MVVM.从DOM操作到数据驱动,一直在不断的进步着,提升着, angular中用的是watcher对象,vue是观察者模式,react就是state了,他们各有各的特点,没有好 ...
- No-11.变量进阶
变量进阶 目标 变量的引用 可变和不可变类型 局部变量和全局变量 01. 变量的引用 变量 和 数据 都是保存在 内存 中的 在 Python 中 函数 的 参数传递 以及 返回值 都是靠 引用 传递 ...
- C语言中最常用标准库函数
标准头文件包括: <asset.h> <ctype.h> <errno.h> <float.h> <limits ...
- Ubuntu12.04安装Chrome浏览器,并添加到左侧的启动栏
在google官网下载google chrome deb包,有32位和64位之分: 怎么判断系统是32位还是64位的,可以用以下代码: ; int *p = &a; printf(" ...
- Multi Paxos
Multi Paxos [2] 通过basic paxos 以上步骤分布式系统已经能确定一个值,“只确定一个值有什么用?这可解决不了我面临的问题.” 你心中可能有这样的疑问. 原simple paxo ...