关闭

2. python入门杂记

标签: python
343人阅读 评论(0) 收藏 举报
分类:

元祖

  • 创建一个元祖(逗号是关键)
touple1 = (1,2,3,4,5) //不可修改
可以使用类似列表的访问方法, 分片
touple1[1]    touple1[:3]

touple2 = 2,3,4
touple3 =() 一个空的元祖
tmp = 1,  =====> 元祖类型
tmp = (1) ======>int类型
tmp = (1,) ====>元祖类型

8*(8,) =====> (8, 8, 8, 8, 8, 8, 8, 8)
  • 更新和删除一个元祖
#由于元祖不能修改,所以更新是重新拼凑一个元素付给这个变量名
temp=('小甲鱼', '黑夜', '彩虹')
temp=temp[:1]+('白天',)+[1:]        #  不要忘记白天后面的逗号,这是元祖之间的操作
del temp # 删除元祖

字符串

  • 格式化字符串
"{0} love {1}.{2}".format("I", "FishC", "com")   ====>'I love FishC.com'

"{a} love {b}.{c}".format(a="I", b="FishC", c="com")    ====>'I love FishC.com'

"{{0}}".format("不打印")    =====> '{0}'

'{0:.1f}{1}'.format(27.658, 'GB') ======> '27.7GB'  #会四舍五入

'%c' % 97  =====> 'a'
'%c %c %c' % (97,98,99)   ======> 'a b c'

序列

  • 列表, 元祖和字符串的共同点

    都可以通过索引的到每一个元素
    默认索引值总是从0开始
    可以通过分片的方法得到一个范围内的元素的集合
    有很多共同的操作符(重复操作符, 拼接操作符, 成员关系操作符)
    
  • 内置函数

len()   #长度
list()  #迭代转化成列表
####仅应用于同一类型之间
max()   #最大值
min()   #最小值
sum()   #求和
sorted()    #排序
reversed()  #逆置  返回迭代器对象
enumerate() #枚举 下标与值组合的迭代器对象
number=[-98,0,1,13,45,76,3]
list(enumerate(number)) ====》
[(0, -98), (1, 0), (2, 1), (3, 13), (4, 45), (5, 76), (6, 3)]

a = [1,2,3,4,5,6,7,8]    b=[4,5,6,7,8]
zip(a,b)
list(zip(a,b))
[(1, 4), (2, 5), (3, 6), (4, 7), (5, 8)]

函数

  • 创建函数
#注意缩进
 def MyFirstFunction():
    print('this my first func!')
    print('i am very happy')

MyFirstFunction()       ====>   调用
  • 函数文档
>>  def MyFirstFunction(name):
        '函数定义过程中的name叫做形参'
        #因为Ta只是一个形式,便是占据一个参数的位置
        print('传递进来的'+name+'叫做实参, 因为Ta是具体的参数值!')

>>  MyFirstFunction.__doc__         #默认属性
    '函数定义过程中的name叫做形参'

>>  help(MyFirstFunction)
    Help on function MyFirstFunction in module __main__:

    MyFirstFunction(name)
        函数定义过程中的name叫做形参
  • 关键字参数
    使用参数名指定参数,
>>> def SaySome(name, words):
    print(name+'->'+words)
>>> SaySome(words='编程改变世界', name='Albin')
Albin->编程改变世界
  • 默认参数
>>> def SaySome(name='Albin', words='编程改变世界'):
    print(name+'->'+words)
>>> SaySome()
Albin->编程改变世界
  • 收集参数
    不确定参数的长度
>>> def test(*params):
    print('参数的长度是:', len(params));
    print('第二个参数是: ', params[1]);

>>> test(1, 'Albin', 3.14, 5, 6)
参数的长度是: 5
第二个参数是:  Albin
  • 返回值
>>> def hello():
    print('Hello World')
>>> temp = hello()
Hello World
>>> print(temp)
None        ## 默认的返回值是None

#################
>>> def back():
    return [1, '小甲鱼', 3.145]
>>> back()
[1, '小甲鱼', 3.145]        #  返回一个列表  可以看作返回多个值

###返回多个值,用逗号隔开,被看做一个元祖,因为创建元祖的标志就是逗号
>>> def back():
    return 1, '小甲鱼', 3.145
>>> back()
(1, '小甲鱼', 3.145)
  • 函数内如何修改全局变量

    局部变量屏蔽全局变量
    在py中,对于上一级作用于的变量,在本级作用于相当于是只读的,不能够对其赋值,如果直接给`x=1`,这样会触发py的屏蔽机制,不会赋值给上一级作用于中的变量,而是重新创建一个同名变量
    如果`x+=x`,这样引用上一级变量,会出语法错误,以为屏蔽机制,所以x并没有定义,直接当作右值是不合法的
    
#global关键字的使用
>>>count=5
>>> def MyFun():
        global count
        count = 10
>>> MyFun()
>>> print(count)
 10
  • 内嵌函数和闭包
    内嵌函数,因为py支持函数内部仍可以调用函数
>>> def fun1():
    print('func()正在被调用')
    def func2():
        print('func2()正在被调用')
    func2()

>>> fun1()
func()正在被调用
func2()正在被调用
>>> func2()    #====>因为在全局里面没有定义func2()  所以会报错
闭包:
    如果在一个内部函数里,对外部作用域(但不是全局变量)进行引用,那么内部函数就会被认为是闭包
>>> def FunX(x):
        def FunY(y):            #===》FunY就是一个闭包
            return x*y
        return FunY
>>> i = FunX(8)
>>> type(i)
<class 'function'>
>>> i(5)
40
>>> FunX(8)(5)  #也可以直接调
40

##在2.7以前,在闭包中为了能过引用上一级作用于的变量,可以把变量放到列表中去
>>> def Fun1():
    x = [5]
    def Fun2():
        x[0]*=x[0]
        return x[0]
    return Fun2()
>>> Fun1()
25

#######nonlocal关键字 (仅用于闭包)
>>> def Fun1():
    x = 5
    def Fun2():
        nonlocal x  ##   声明x不是局部变量
        x*=x
        return x
    return Fun2()

>>> Fun1()
25

Lambda 匿名函数

>>> lambda x : 2*x+2
<function <lambda> at 0x03DDA390>
>>> func=lambda x:2*x+2
>>> func(2)
6
##多个参数
>>> g = lambda x, y:x+y
>>> g(2,3)
5
  • 活用BTF
#filter(function or None, iterable)
#第一个参数可以是个函数,也可以是个None
#当是函数的时候,会把迭代器里面的值传入函数,把返回值为真的组成一个对象, 可以使用list()弄成一个列表
#如果是None , 就直接判断迭代器里的值,返回真的组成一个对象
>>> list(filter(None, [1, 0, False, True]))
[1, True]

>>> temp = range(10)
>>> def odd(x):
        return x%2
>>> show=filter(odd, temp)
>>> list(show)
[1, 3, 5, 7, 9]


###使用lambda表达式改写
>>> show = filter(lambda x:x%2, temp)
>>> list(show)
[1, 3, 5, 7, 9]

###### MAP的是使用
>>> list(map(lambda x: x*2, range(10)))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
  • 递归
#阶乘
>>> def fact(x):
    if x == 1:
        return 1
    return fact(x-1)*x
>>> fact(5)
120
  • 递归解汉诺塔
def hanoi(n, x, y, z):
    if n == 1:
        print(x , '-->', z)
    else:
        hanoi(n-1, x, z, y) #将前n-1个盘子从x移动到y上
        print(x, '-->', z)  #将最底下的最后一个盘子从x移动到z上
        hanoi(n-1, y, x, z)# 将y上的n-1个盘子移动到z上


n = int(input('请输入汉诺塔的层数:'))
hanoi(n, 'X', 'Y', 'Z')  

字典

  • 字典不是序列类型,是映射类型
>>> brand = ['李宁', '耐克', '阿迪达斯']
>>> slogan = ['一切皆有可能', 'Just do it', 'Impossible is nothing']
>>> print('李宁的slogan是:', slogan[brand.index('李宁')])
李宁的slogan是: 一切皆有可能

>>> dict1 = {'李宁':'一切皆有可能', '耐克':'Just do it', '阿迪达斯':'Impossible is nothing'}
>>> print('李宁的slogan是:', dict1['李宁'])
李宁的slogan是: 一切皆有可能
  • 创建
>>> dict3 = dict((('F', 70),('i', 105) ))
>>> dict3
{'F': 70, 'i': 105}

>>> dict4 = dict(a = 1, b = 2)
>>> dict4
{'b': 2, 'a': 1}

>>> dict1 = {}
>>> dict1.fromkeys((1,2,3))
{1: None, 2: None, 3: None}
>>> dict1.fromkeys((1,2,3),'Number')
{1: 'Number', 2: 'Number', 3: 'Number'}
>>> dict1.fromkeys((1,2,3), ('one', 'two', 'three'))
{1: ('one', 'two', 'three'), 2: ('one', 'two', 'three'), 3: ('one', 'two', 'three')}
  • 访问
>>> dict1 = dict1.fromkeys(range(32), '赞')
>>> dict1
{0: '赞', 1: '赞', 2: '赞', 3: '赞', 4: '赞', 5: '赞', 6: '赞', 7: '赞', 8: '赞', 9: '赞', 10: '赞', 11: '赞', 12: '赞', 13: '赞', 14: '赞', 15: '赞', 16: '赞', 17: '赞', 18: '赞', 19: '赞', 20: '赞', 21: '赞', 22: '赞', 23: '赞', 24: '赞', 25: '赞', 26: '赞', 27: '赞', 28: '赞', 29: '赞', 30: '赞', 31: '赞'}

>>> for eachKey in dict1.keys():
    print(eachKey)

>>> for eachValue in dict1.values():
    print(eachValue)

>>> for eachItem in dict1.items():
    print(eachItem)

##如果试图访问字典中没有的
print(dict1[32])  ====> 会报错

# 这是要使用get
dict1.get(32)  ====> 会返回一个None
dict1.get(32, '木有')  ===> 会返回木有

>>>31 in dict1
True
>>>32 in dict1
False
  • 清空
#直接把内存清空
dict1.clear()   ====>清空 ,但如果原来的内存被其他标签引用了,也会清空

dict1 = {}  # 只是把另一个空的字典贴上dict1的标签,但如果原来的内存被其他标签引用了,不会清空

dict1.pop(2)
dict1.popitem()
  • 添加
>>> a = {1:'one', 2:'two'}
>>> a
{1: 'one', 2: 'two'}
>>> a.setdefault('百度')
>>> a
{1: 'one', 2: 'two', '百度': None}
>>> a.setdefault(3, 'three')
'three'
>>> a
{1: 'one', 2: 'two', 3: 'three', '百度': None}


>>> a.setdefault(1)
>>> a
{1: None}
>>> b = {}
>>> b.setdefault(1, 'one')
'one'
>>> a.update(b)
>>> a
{1: 'one'}

集合

    唯一, 无须
>>> set1 = set([1,2,3,4,5,5])
>>> set1
{1, 2, 3, 4, 5}
>>> 
  • forzenset

    不可变集合
    
>>> num3 = frozenset([1,2,3,4,5])
>>> num3
frozenset({1, 2, 3, 4, 5})
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

015:字符串:格式化

笔记: 字符串格式化符号含义       符   号    说     明     ...
  • junwei0206
  • junwei0206
  • 2015-03-30 21:16
  • 904

【零基础入门学习Python笔记001】我和Poyhon的第一次亲密接触:课后测试集答案

测试题: 0.Python是什么语言? Pothon是脚本语言 引用:脚本语言(Scripting language)是电脑编程语言,因此也能让开发者籍以编写出让电脑听命令行事的程序。以简单的方...
  • SMF0504
  • SMF0504
  • 2016-03-08 18:43
  • 2053

Python2 之 print函数示例

吐槽下,python2 官方文档的print资料好少啊,看的别人博客才知道咋用╮(╯_╰)╭ #!/usr/bin/env python # -*- coding: utf-8 -*- import ...
  • lijiang1991
  • lijiang1991
  • 2016-07-09 20:44
  • 4300

【读书笔记】机器学习实战-kNN(1)

k临近算法(kNN)采用测量不同特征值之间的距离方法进行分类,也是一种非常直观的方法。本文主要记录了使用kNN算法改进约会网站的例子。任务一:分类算法classify0 就是使用距离公式计算特征值之...
  • iboxty
  • iboxty
  • 2015-04-10 17:06
  • 5144

1. python入门杂记

python # py是类似脚本语言,也使用#来作为注释的标志print('--------------i love the world-----------') temp = input("gues...
  • a312024054
  • a312024054
  • 2016-05-25 22:33
  • 386

《微分几何入门与广义相对论》杂记

  • 2009-11-22 14:18
  • 128KB
  • 下载

市场营销一日入门杂记-对网易游戏的浅陋浅陋浅陋分析

品牌传播: 网聚人的力量(网易) 主要用户群体:18-35岁 打造“快乐”、“时尚”、充满人性化的品牌形象定位营销(人群、地域)、广告营销、博客营销、文化营销产品策略、价格策略、分销策略、促销策略...
  • u013816144
  • u013816144
  • 2016-04-23 17:35
  • 589

9.odoo入门——杂记之views下的xml(一)

第9天 在odoo后台中,主要用views/下的xml文件来控制odoo显示的列表项,刚看到这个xml,总结几点知识: Xml文件中要注意的几个小问题: 1.在__manifest_...
  • qq_33826977
  • qq_33826977
  • 2017-07-27 10:20
  • 117

10.11.12.odoo入门——杂记

第10天 下午开始做一个页面,需要用到framework7,但是我完全不懂前端页面的一些控件啊- -  第11天 上午: 项目工作要开始走上正轨了,我也...
  • qq_33826977
  • qq_33826977
  • 2017-08-04 09:05
  • 710

杂记+vmware vsphere 5.5零基础入门系列

1, 计算机自左到右依次为计算机名 网络名 机构名 最高域名 2, Power-BI目前分为两个产品体系: (1)Power-BI标准解决方案 For金蝶(EAS、K3、KIS专业版)/ 用友(...
  • lusic01
  • lusic01
  • 2015-02-25 15:50
  • 448
    个人资料
    • 访问:63668次
    • 积分:1369
    • 等级:
    • 排名:千里之外
    • 原创:74篇
    • 转载:6篇
    • 译文:0篇
    • 评论:40条
    最新评论