Python基础之set与函数
set集合
set 是无序,不重复的序列,基本功能包括去重和关系测试,集合中没有插入的方法,只能添加。
集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等
1.交集
#!/usr/bin/env python # _*_ coding:utf-8 _*_ # Author: enzhi.wang set_1 = set([0,1,2,3,4,5,]) set_2 = set([2,3,4,5,6,7]) # 交集,set_1中存在并且set_2中也存在的 print(set_1.intersection(set_2))
执行上代码结果为:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day3/set1.py
{2, 3, 4, 5}
2.并集
#!/usr/bin/env python # _*_ coding:utf-8 _*_ # Author: enzhi.wang set_1 = set([0,1,2,3,4,5,]) set_2 = set([2,3,4,5,6,7]) # 并集,合并两个集合中的内容并删除相同的元素 print(set_1.union(set_2))
执行上代码结果为:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day3/set1.py
{0, 1, 2, 3, 4, 5, 6, 7}
3.差集
#!/usr/bin/env python # _*_ coding:utf-8 _*_ # Author: enzhi.wang set_1 = set([0,1,2,3,4,5,]) set_2 = set([2,3,4,5,6,7]) # 差集,set_1中有的set_2中没有的 print(set_1.difference(set_2))
执行上代码结果为:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day3/set1.py
{0, 1}
4.子集
#!/usr/bin/env python # _*_ coding:utf-8 _*_ # Author: enzhi.wang set_1 = set([2,3,4,5,]) set_2 = set([2,3,4,5,6,7]) # 子集,set_1中的内容时候在set_2中,返回True或False print(set_1.issubset(set_2))
执行上代码结果为:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day3/set1.py True
5.父集
1 #!/usr/bin/env python 2 # _*_ coding:utf-8 _*_ 3 # Author: enzhi.wang 4 set_1 = set([2,3,4,5,]) 5 6 set_2 = set([2,3,4,5,6,7]) 7 8 # 父集 9 print(set_1.issuperset(set_2)) #set_1是否是set_2的父集 10 print(set_2.issuperset(set_1)) #set_2是否是set_1的父集 执行上代码结果为: C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day3/set1.py False True
6.对称差集
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# Author: enzhi.wang
set_1 = set([0,1,2,3,4,5,])
set_2 = set([2,3,4,5,6,7])
# 对称差集,返回两个集合中有差集的元素
print(set_1.symmetric_difference(set_2))
执行上面代码的结果为:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day3/set1.py
{0, 1, 6, 7}
7.判断是否有交集
#!/usr/bin/env python # _*_ coding:utf-8 _*_ # Author: enzhi.wang set_1 = set([0,1,2,3,4,5,]) set_2 = set([2,3,4,5,6,7]) # 判断是否有交集,有返回False print(set_1.isdisjoint(set_2)) 执行上面代码的结果为: C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day3/set1.py False
8.set的其它操作
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# Author: enzhi.wang
set_1 = set([0,1,2,3,4,5,])
set_2 = set([2,3,4,5,6,7])
# 添加1项
set_1.add(999)
print(set_1)
# 添加多个
set_1.update([111,222,333,])
print(set_1)
#
# 删除
set_1.remove(999)
print(set_1)
# 随机删除并返回删除的值
print(set_1.pop())
# 删除不存在不报错
set_1.discard('ddd')
# 成员测试
if 1 in set_1:
print('True')
else:
print('False')
执行上面代码的结果为:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day3/set1.py
{0, 1, 2, 3, 4, 5, 999}
{0, 1, 2, 3, 4, 5, 999, 333, 111, 222}
{0, 1, 2, 3, 4, 5, 333, 111, 222}
0
True
9.集合的运算符
上面各示例中都是使用英文关键词去操作的集合,集合还支持使用&,^,|,-,符号进行操作。
# 集合运算符 # 交集 运算符 & # 差集 运算符 - # 并集 运算符 | # 对称差集 运算符 ^
函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
定义一个函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
- 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
语法
python定义函数使用def关键字,一般格式如下:
def 函数名(参数列表):
"函数声明"
函数体
示例1:用函数来输入Hello World
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# Author: enzhi.wang
def hello():
print("Hello,World!!")
# 调用函数使用函数名加()括号即可
hello()
执行上面代码的结果为:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/练习/func_helloworld.py Hello,World!!
更复杂的应用函数中带上参数变量;
参数
以下是调用函数时可使用的正式参数类型:
- 必需参数
- 关键字参数
- 默认参数
- 不定长参数
必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# Author: enzhi.wang
def test1(x,y): #形式参数
print("x的值为:",x)
print("y的值为:",y)
test1(1,2) #位置传参要与x,y一一对应
test1(y=1,x=2) #指定参数,与形式参数顺序无关
执行上面代码的结果为:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day3/func_test2.py x的值为: 1 y的值为: 2 x的值为: 2 y的值为: 1
下面实例为不传入参数时的情况:
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# Author: enzhi.wang
def test1(x,y): #形式参数
print("x的值为:",x)
print("y的值为:",y)
test1()
执行上面代码的结果为:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day3/func_test2.py
Traceback (most recent call last):
File "C:/Users/root/PycharmProjects/S14/day3/func_test2.py", line 12, in <module>
test1()
TypeError: test1() missing 2 required positional arguments: 'x' and 'y'
关键字参数
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。
使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
以下实例在函数 test1()调用时使用参数名:
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# Author: enzhi.wang
def test1(str): #形式参数
"传入任何字符串"
print(str)
test1(str="你好,世界!")
以上实例输出结果:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day3/func_test2.py 你好,世界!
以下实例中演示了函数参数的使用不需要使用指定顺序:
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# Author: enzhi.wang
def test1(name,age,job): #形式参数
"传入任何字符串"
print("姓名:",name)
print("年龄:",age)
print("工作:",job)
test1(age=20,job="运维",name="王恩志")
以上实例输出结果:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day3/func_test2.py 姓名: 王恩志 年龄: 20 工作: 运维
默认参数
调用函数时,如果没有传递参数,则会使用默认参数。以下实例中如果没有传入 age 参数,则使用默认值:
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# Author: enzhi.wang
def test1(name,job,age = 20): #注意:默认参数必须放置在没有指定默认参数的关键字参数后面否则报错
"传入任何字符串"
print("姓名:",name)
print("年龄:",age)
print("工作:",job)
test1(job="运维",name="王恩志")
以上实例输出结果:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day3/func_test2.py 姓名: 王恩志 年龄: 20 工作: 运维
不定长参数
你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。基本语法如下:
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# Author: enzhi.wang
def 函数名(*args):
函数体
return
加了星号(*)的变量名会存放所有未命名的变量参数。如果在函数调用时没有指定参数,它就是一个空元组。如下实例:
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# Author: enzhi.wang
def test(*args):
print("多个参数:",args)
test()
test(1,2,3,4,5,6)
以上实例输出结果:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day3/func_test3.py 多个参数: () 多个参数: (1, 2, 3, 4, 5, 6)
加了两个星号(**)时传入的参数必须是以key-value的形式。如果在函数调用时没有指定参数,它就是一个空字典。如下实例:
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# Author: enzhi.wang
def test(**kwargs):
print(kwargs)
print(kwargs['name'])
print(kwargs['age'])
print(kwargs['job'])
# 调用test()函数,传入的值为key-value的形式
test(name="王恩志",age=18,job="运维")
以上实例输出结果:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day3/func_test4.py
{'name': '王恩志', 'age': 18, 'job': '运维'}
王恩志
18
运维
return语句
return [表达式] 语句用于退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。之前的例子都没有示范如何返回数值,以下实例演示了 return 语句的用法:
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# Author: enzhi.wang
def test(arg1,arg2):
total = arg1 + arg2
print("函数内total为:",total)
return total
result = test(10,20) #result用于接收函数的返回值
print("函数外返回的值为:",result)
以上实例输出结果:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day3/func_test7.py 函数内total为: 30 函数外返回的值为: 30
变量作用域
Pyhton 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。
变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。两种最基本的变量作用域如下:
- 全局变量
- 局部变量
全局变量和局部变量
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。如下实例:
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# Author: enzhi.wang
total = 0 #这是一个全局变量
def test(arg1,arg2):
"local variable"
total = arg1 + arg2 #这里是局部变量
print("函数内是局部变量",total)
return total
# 调用test函数
test(10,20)
print("函数外是全局变量",total)
以上实例输出结果:
C:\Python3.5\python.exe C:/Users/root/PycharmProjects/S14/day3/func_test8.py 函数内是局部变量 30 函数外是全局变量 0
内置函数
1. enumerate()
在python中循环一个列表或者元祖时要想打印索引又同时打印元素时通常是这样去写
#!/usr/bin/env python # -*-coding: utf-8 -*- # Author: enzhi.wang
5 li = ['iPhone6s','Macbook Pro','Mp3',]6 for i in range(len(li)):7 print(i,li[i])
以上实例输出结果:
C:\python3\python.exe C:/Users/Administrator/PycharmProjects/S14-python3/day4/lambda_func.py
0 iPhone6s
1 Macbook Pro
2 Mp3
上面的写法需要先获取列表中有几个元素使用len()函数,然后在循环打印,使用enumerate就可以简化上面的写法
#!/usr/bin/env python
# -*-coding: utf-8 -*-
# Author: enzhi.wang
#
li = ['iPhone6s','Macbook Pro','Mp3',]
for i,item in enumerate(li,1): #enumerate(li,1) 这里1的作用是打印时前面的序号从1开始
print(i,item)
以上实例输出结果:
C:\python3\python.exe C:/Users/Administrator/PycharmProjects/S14-python3/day4/lambda_func.py 1 iPhone6s 2 Macbook Pro 3 Mp3
2. eval()
eval()函数十分强大,官方demo解释为:将字符串str当成有效的表达式来求值并返回计算结果。
示例
#!/usr/bin/env python # -*-coding: utf-8 -*- # Author: enzhi.wang a = "1 + 1" print(a) print(eval(a)) #eval()会将a变量值中的字符串当做表达式来进行求值并返回结果,所以会返回1+1的结果是2
以上实例输出结果:
C:\python3\python.exe C:/Users/Administrator/PycharmProjects/S14-python3/day4/practice_eval.py 1 + 1 2
Python基础之set与函数的更多相关文章
- 十六. Python基础(16)--内置函数-2
十六. Python基础(16)--内置函数-2 1 ● 内置函数format() Convert a value to a "formatted" representation. ...
- 十五. Python基础(15)--内置函数-1
十五. Python基础(15)--内置函数-1 1 ● eval(), exec(), compile() 执行字符串数据类型的python代码 检测#import os 'import' in c ...
- Python基础篇(三)_函数及代码复用
Python基础篇_函数及代码复用 函数的定义.使用: 函数的定义:通过保留字def实现. 定义形式:def <函数名>(<参数列表>): <函数体> return ...
- python基础学习1-内置函数
#!/usr/bin/env python # -*- coding:utf-8 -*- 系统内置函数 n =abs(-1) #绝对值 print(n) #bytes()函数 s="离开&q ...
- Python基础知识之5——函数基础
函数 函数是一个独立且封闭完成特定功能的代码块,可以在任何地方被调用.Python内置了很多函数,我们可以直接调用,使用的时候,先查询下Python的官方文档即可: http://docs.pytho ...
- Python基础_内置函数
Built-in Functions abs() delattr() hash() memoryview() set() all() dict() help() min() setat ...
- python基础(15):内置函数(一)
1. 内置函数 什么是内置函数? 就是python给你提供的,拿来直接⽤的函数,比如print,input等等,截⽌到python版本3.6.2 python⼀共提供了68个内置函数.他们就是pyth ...
- python基础补漏-04-常用函数
----lambda 首先我们说,很遗憾 在python中lambda 仅仅只是一个表达式 那么如何去使用呢? 这个是lambda最简单的使用方式 一般跟map一起配合使用 --map (fun,l ...
- 【Python基础学习六】函数
1.创建函数 Python中函数的关键字def来定义. def fibs(num): f=[0,1] for i in range(1,num): f.append(f[-1]+f[-2]) retu ...
- 学习PYTHON之路, DAY 4 - PYTHON 基础 4 (内置函数)
注:查看详细请看https://docs.python.org/3/library/functions.html#next 一 all(), any() False: 0, Noe, '', [], ...
随机推荐
- Bzoj 2038---[2009国家集训队]小Z的袜子(hose) 莫队算法
题目链接 http://www.lydsy.com/JudgeOnline/problem.php?id=2038 Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色 ...
- 引用计数 vs. GC
内存管理问题 内存管理是编程过程中的一个经典问题,早期在 C 语言时代,几乎都靠 malloc/free 手动管理内存.随着各个平台的发展,到现在被广泛采用的主要有两个方法: 引用计数 (ARC,Au ...
- 初识windows程序需要了解的知识点
初识一件事物我们会有陌生,我们慢慢地去了解它就会懂,让我带你们一起了解吧. 一.Form是.Net Framework 定义好的一个最基本的窗体类,具有窗体基本属性和方法 属性 ...
- PDF.NET框架学习篇之SQL-MAP使用存储过程
最近一直在学习“深蓝医生”的PDF.NET框架,对Sql-Map使用存储过程有了点小小的体会.基础知识请到http://www.cnblogs.com/bluedoctor/archive/2010/ ...
- Vis.js – 基于浏览器的动态 JavaScript 可视化库
Vis.js 是一个动态的,基于浏览器的可视化库.该库被设计为易于使用,能处理大量的动态数据.该库由以下几部分组成:一是数据集和数据视图,基于灵活的键/值数据集,可以添加,更新和删除项目,订阅数据集变 ...
- 小伙伴们惊呆了!10行 JavaScript 实现文本编辑器
最近,我需要做一个非常基本的网页内容编辑功能.我不想使用 iframe ,我也不想要一个功能特别多的复杂编辑器,只需要很基本的内容编辑功能,例如粗体,斜体,列表,对齐等等. 您可能感兴趣的相关文章 分 ...
- Extjs 使用fileupload插件上传文件 带进度条显示
一.首先我们看看官方给出的插件的解释: 一个文件上传表单项具有自定义的样式,并且可以控制按钮的文本和 像文本表单的空文本类似的其他特性. 它使用一个隐藏的文件输入元素,并在用户选择文件后 在form提 ...
- 学习笔记:腾讯云——服务器mysql操作
1.进入数据库 (注意:在linux系统下要进入mysql所在的文件夹下才能打开数据库) 操作1:进入到指定目录下 命令行:cd /opt/lampp/bin 操作2:进入到数据库 命令行:./mys ...
- 利用Ajax增删改Sharepoint List Item
在使用一个工具的是想要在本地的HTML文件或者JS,修改Sharepoint List中的数据. 如下是找到的方法.不知道还有其他方法没.IE中可以使用.记得加载Jquery. 如果是Chrome 浏 ...
- 给view添加类似系统上拉快捷菜单的手势
iOS7以后从屏幕最下方上划会滑出快捷菜单,感觉这个效果不错,就想做个类似的效果,这个东西技术含量不高,每次都写一遍的话就太浪费时间了,所以就把它写成了一个分类,用起来会方便一点. demo地址:ht ...