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与函数的更多相关文章

  1. 十六. Python基础(16)--内置函数-2

    十六. Python基础(16)--内置函数-2 1 ● 内置函数format() Convert a value to a "formatted" representation. ...

  2. 十五. Python基础(15)--内置函数-1

    十五. Python基础(15)--内置函数-1 1 ● eval(), exec(), compile() 执行字符串数据类型的python代码 检测#import os 'import' in c ...

  3. Python基础篇(三)_函数及代码复用

    Python基础篇_函数及代码复用 函数的定义.使用: 函数的定义:通过保留字def实现. 定义形式:def <函数名>(<参数列表>): <函数体> return ...

  4. python基础学习1-内置函数

    #!/usr/bin/env python # -*- coding:utf-8 -*- 系统内置函数 n =abs(-1) #绝对值 print(n) #bytes()函数 s="离开&q ...

  5. Python基础知识之5——函数基础

    函数 函数是一个独立且封闭完成特定功能的代码块,可以在任何地方被调用.Python内置了很多函数,我们可以直接调用,使用的时候,先查询下Python的官方文档即可: http://docs.pytho ...

  6. Python基础_内置函数

        Built-in Functions     abs() delattr() hash() memoryview() set() all() dict() help() min() setat ...

  7. python基础(15):内置函数(一)

    1. 内置函数 什么是内置函数? 就是python给你提供的,拿来直接⽤的函数,比如print,input等等,截⽌到python版本3.6.2 python⼀共提供了68个内置函数.他们就是pyth ...

  8. python基础补漏-04-常用函数

    ----lambda 首先我们说,很遗憾 在python中lambda 仅仅只是一个表达式 那么如何去使用呢? 这个是lambda最简单的使用方式  一般跟map一起配合使用 --map (fun,l ...

  9. 【Python基础学习六】函数

    1.创建函数 Python中函数的关键字def来定义. def fibs(num): f=[0,1] for i in range(1,num): f.append(f[-1]+f[-2]) retu ...

  10. 学习PYTHON之路, DAY 4 - PYTHON 基础 4 (内置函数)

    注:查看详细请看https://docs.python.org/3/library/functions.html#next 一 all(), any() False: 0, Noe, '', [], ...

随机推荐

  1. JavaWeb前端基础复习笔记系列 二

    课程:孔浩前端视频教程(JavaScript系列:1~5讲) <html> <head> <title></title> <!--html只负责显 ...

  2. Oracle常用

    Oracle恢复误删的数据或表,解除锁定SQL或table   转载于: http://renjie120.iteye.com/ 注释:本文转自网络,转载请注明注意:数据库版本是10g,不过大部分9i ...

  3. Think_php入口文件配置

    think_php的入口模式有两种方式 1,一个入口文件对应一个项目应用 2,一个入口文件对应所有项目应用 默认情况,入口文件只需要require thinkphp文件夹就可以.比如thinkphp文 ...

  4. 《深入.NET平台和C#编程》内部测试题

    一 选择题 1)      以下关于序列化和反序列化的描述错误的是( C). a)      序列化是将对象的状态存储到特定存储介质中的过程 b)      二进制格式化器的Serialize()和D ...

  5. Trumbowyg - 轻量的 WYSIWYG 编辑器

    Trumbowyg 是一个轻量,可定制的 jQuery 所见即所得(WYSIWYG)的编辑器插件.美丽的设计,生成语义化代码,带有功能强大的 API .编辑器和生成的代码进行了优化以支持 HTML5. ...

  6. 2014年3月新鲜出炉的最佳 JavaScript 工具库

    一个 JavaScript 库是预先编写的 JavaScript 程序,用于简化 Web 应用程序开发,特别是对 Ajax 和其它 Web 为中心的技术.JavaScript 提供了多种方法,通过它来 ...

  7. 推荐25款实用的 HTML5 前端框架和开发工具【下篇】

    快速,安全,响应式,互动和美丽,这些优点吸引更多的 Web 开发人员使用 HTML5.HTML5 有许多新的特性功能,允许开发人员和设计师创建应用程序和网站,带给用户桌面应用程序的速度,性能和体验. ...

  8. [deviceone开发]-HeaderView和FooterView的示例

    一.简介 这个是利用do_ListView组件实现下拉和上拉刷新功能的例子,除了do_ListView,其它比如do_Webview,do_ScrollView都有这个个功能.对应的BBS里的帖子详细 ...

  9. Creating Custom Connector Sending Claims with SharePoint 2013

    from:http://blogs.msdn.com/b/security_trimming_in_sharepoint_2013/archive/2012/10/29/creating-custom ...

  10. SharePoint 2013 – Workflow Manager 1.0 offline download

    [http://sharepointdeal.wordpress.com/2013/03/13/sharepoint-2013-workflow-manager-1-0-offline-downloa ...