Python学习笔记-1

Python学习笔记

标签: 未分类


基本概念

变量

Python中大小写敏感,变量由字母、数字或者下划线组成,并且只能以字母或者下划线开头。Python中变量名可以认为是指向变量的指针。

运算符

加:+
减:-
乘:*
除:/,这个除法在python3中是浮点数(即使被除数、除数都是整数且能整除)
除法取整(地板除)://
除法取余:%
指数:**

数据类型

数字

不可变类型

字符串(string)

可变类型,字符串支持+,*运算符,可更改,可迭代类型,可以通过序号访问;

字符串格式化

除了使用强制类型转换的方式把字符串与非字符串合并在一起外,还可以使用字符串格式化方式创建字符串(使用字符串的format方法):

nums = [4,5,6]
msg = "Numbers:{0} {1} {2}".format(nums[0],nums[1],nums[2])
print msg

结果输出

Numbers:4 5 6

字符串格式化也可以使用类似命名参数的方式定义:

a = "{x},{y}".format(x=5,y=12)
print(a)

输出:

5,12
列表(list)

中括号【】括起来,各项之间以逗号分开,各项可以是不同数据类型,可以通过序号来访问(从0开始),可更改,可迭代类型,常见list方法有append、insert、index等,也可以使用python内置的len函数来获取list的长度。实际使用中可以使用range函数生成range 对象,然后使用list(range对象)方式把range对象转换得到一个list
numbers = list(range(10))
print (numbers)
结果:>>> [0,1,2,3,4,5,6,7,8,9]

字典(dictionaries)

{}定义,使用[key]的方式访问,使用这种方式式如果key不存在,那么会抛出KeyError异常,另外也可以使用字典的get方法来获取字典的值,此时或者返回具体值,或者返回None,或者返回指定的值(get的第二个参数)

pairs = {1:'apple','orange':[2,3,4],TrueFalseNone'True'}

print(pairs.get('orange')
print(pairs.get(7)
print(pairs.get(12345,'Not in dictionary')

结果输出:

[2,3,4]
None
Not in dictionary
元组(tuple)

元组与list非常相像,不同的是元组是不可变的,使用()创建

列表高级功能

分片、列表生成式(evens = [i**2 for i in range(10) if i**2 % 2 == 0])

处理异常(exception)

try/except:把可能出现异常的语句放在try:代码块,如果有异常发生,try代码块停止执行(即try块抛出异常的语句之后的语句将得不到执行),转而执行except:代码块。如果没有异常发生,那么except:代码块将不会被执行。一个try代码块可以有多个except代码块,分别处理不同的异常,一个except也可以处理多个异常:

    try:
        variable = 10
        print(variable + "hello")
        print(variable / 0)
    except ZeroDivisionError:
        print("Divided by zero")
    except (ValueError, TypeError):
        print("Error occurred")
代码运行输出:>>> Error occurred

except之后也可以不指定异常类型,那么所有的异常都将会被捕获:

    try:
        word = "spam"
        print(word / 0)
    except:
        print("An error occurred")

还有另外一种使用方式:try…except…finally,finally:代码块中的语句将永远会得到执行(不管try代码块中是否产生异常,甚至不管异常是否有被捕获处理);
可以使用raise抛出异常,可以使用assert来判定某个条件是否成立,如果为假则也会抛出异常:

    print(1)
    assert 2 + 2 == 4
    print(2)
    assert 1 + 1 == 3
    print3

输出>>
1
2
AssertionError
assert也可以添加第2个参数(字符串),当AssertionError发生时会打印出来:

    temp = -10
    assert(temp >= 0),"Colder than absolute zero"
输出:>>> AssertionError:Colder than absolute zero

如果AssertError发生后没有被捕获被处理,那么程序会被终止,这是与其他异常异常不同的地方*

函数式编程

所谓的函数式编程,就是使用函数名做参数,或者返回函数名。

lambda

通常函数都是使用def 加函数名称(本质上是变量)方式来定义,但也可以不带函数名的方式(匿名方式)来定义函数,这就是lambda,lambda后直接跟函数参数然后:之后带表达式(只能是单个表达式,通常意义上来说也就是一行语句)。实例:

def my_func(f,arg)return f(arg)
my_func(lambda x : 2*x*x, 5)

map & filter

map函数名作为第一个参数,把可迭代数据类型(列表、元组、字典、字符串)作为第二个参数,完成的功能就是把第一个参数作用到第二个参数上,返回map对象,可以通过list函数显示的转换。

def add_five(x):
    return x + 5

nums = [11,22,33,44,55]
result = list(map(add_five,nums))
print(result)

输出结果:

[16,27,38,49,60]

当然,map中的函数也可以使用lambda方式,对于上面的例子,可以使用类似如下形式:

result = list(map(lambda x:x + 5,nums))

filter函数使用形式与map类似,其含义是通过第1个参数中的函数对第2个参数中的数据进行筛选,只保留能使第1个函数返回值为真的数据。实例:

mums = [11,22,33,44,55]
res = list(filter(lambda x:x%2==0, nums))
print(res)

输出结果:

[22,44]

生成器(generators)

生成器也是一种可迭代类型,与list,tuple等相似,但是不同的是生成器不能通过索引访问,只能通过for循环迭代,定义方式是通过函数+yield语句的方式。

def countdown():
    i = 5
    while i > 0:
        yield i
        i -= 1
for i in countdown():
    print(i)

结果:

5
4
3
2
1

yield语句表明这个是一个生成器(而非函数),它代替return语句返回返回值,但是返回之后本地变量并不会被销毁。因为yield每次返回一个值,因此它没有list的内存限制,这个在进行大数据处理时很有用。当然生成器也可以通过list强制类型转换转换为普通列表。

def numbers(x):
    for i in range(x):
        if i % 2 == 0:
            yield i
print(list(numbers(11)))

输出结果:

[0,2,4,6,8,10]

生成器的另外一种定义方式是通过列表生成式定义:只需要把列表生成式的[]更改为()即可。

L = [x*x for x in range(10)]
print(L)
g = (x*x for x in range(10))
print(g)

输出:

[0,1,4,9,16,25,36,49,64,81]
<generator object <genexpr> at 0x00000248898BFF10>

可以使用for循环打印g中数据(for i in g:),也可以使用next(g)逐个获得g中元素,直到StopIteration异常(超出g范围)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值