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. 说说web 2.0生态圈的那些事

    先来说一道面试题吧,“说一下,web 2.0 和web 1.0的区别?” 官方的解释是这样的: Web1.0 的主要特点在于用户通过浏览器获取信息,Web2.0 则更注重用户的交互作用,用户既是网站内 ...

  2. 高级Java研发工程师面试题总结

    目录 一.Java基础 二.JVM虚拟机基础 三.开源框架基础 四.分布式基础 五.设计模式基础 六.数据库基础 七.网络基础 八.数据结构和算法基础 九.Linux基础 十.其他技术基础 一.JAV ...

  3. ANDROID学习书单

    Skip to content PersonalOpen sourceBusinessExplore Sign upSign in PricingBlogSupport   This reposito ...

  4. 手动创建VS单元测试,显示代码覆盖率

    Visual Studio 号称有史以来最强大的IDE,确实如此.创建单元测试也是一键完成:在方法的代码块中右键“Create Unit Test…”,勾选测试项,填项目名,完成.VS就会自动帮你创建 ...

  5. 超酷HTML5 Canvas图表应用Chart.js自定义提示折线图

    超酷HTML5 Canvas图表应用Chart.js自定义提示折线图 效果预览 实例代码 <div class="htmleaf-container"> <div ...

  6. browser.html – HTML 实现 Firefox UI

    browser.html 是一个实验性的项目,用于证明一个概念:使用 HTML 重新实现 Firefox UI ,并作为一个应用程序.它是基于浏览器的 API ,并以浏览器的方式和系统的应用工作.即使 ...

  7. angular源码分析:angular中各种常用函数,比较省代码的各种小技巧

    angular的工具函数 在angular的API文档中,在最前面就是讲的就是angular的工具函数,下面列出来 angular.bind //用户将函数和对象绑定在一起,返回一个新的函数 angu ...

  8. 通过ABAP的标准功能,寻找源代码中的字符串

    程序名称: *ABAP_SOURCE_SCAN 查找 作用:通过这个标准程序,可以在系统的源代码中进行字符串的查找!

  9. Arcgis Engine 切割图斑(ITool)

    public override void OnMouseDown(int Button, int Shift, int X, int Y) { // TODO: Add Cut.OnMouseDown ...

  10. SharePoint 2013 通过审计获取文档下载次数

    1.创建一个文档库,进入库设置,找到”Information management policy settings”,点进去,如下图: 2.分别设置”Document”.”Folder”两个,如下图: ...