Python 学习笔记 (1)

Python笔记

简介

此笔记寒假整理,基于Python 2.7,内容来自廖雪峰Python教程为Python的基本语法笔记
Python是一门解释型语言 相比C等高级语言速度较慢 不过利于编写
廖雪峰Python教程离线版教程

编码

Python 2.7 默认ASCII编码
为了解决编码中文编码问题,需要在Python代码前加上
#coding=utf-8转化为UTF-8的编码

输出print

print 'HelloWorld'#输出字符串
print '''This is a HelloWorld program
Now let's join Python'''#输出多行文字
print 'Today is',20170126#依次打印中间加空格
#格式化输出 ;类似于C
print "%s %d"%('Today is',20170126)
输出如下:
This is a HelloWorld program
Now let's join Python
Today is 20170126
Today is 20170126

输入

name =raw_input('Please input your name:')
print 'Your name is',name
age =int(raw_input('Please input your age')
print 'Your age is',age
输出:
Please input your name zqt
Your name is zqt
Please input your age 18
Your age is 18

变量

Python这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义
变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java

整数

a=1
b=a*a
print b
输出如下:
1

浮点

a=2.5
b=a*a
print b
输出如下:
6.25

字符串使用

a="Now a is a string"
print a
输出如下:
Now a is a string

转义字符

a='T\'m \"OK\"'
len(a)#字符串长度
print a
输出如下:
T'm "OK"
s所有字符不转义
print r'T\'m \"OK\"'
输出如下:
T\'m \"OK\"

布尔值

>>>True and False
>>>True or False
>>>not True
输出如下:
False
True
False

List

list是python内置的一种数据结构

相同元素的list:

classmates=['Michael','Bob','Tom']
正序
print classmates[0],classmates[1]
输出如下:
Michael Bob
倒序
print classmates[-1],classmates[-2]
输出如下:
Tom Bob
追加
classmates.append('Adam')
print  classmates
输出如下:
['Michael', 'Bob', 'Tom', 'Adam']
插入
classmates.insert(1,'Jack')
print classmates
输出如下:
['Michael', 'Jack', 'Bob', 'Tom', 'Adam']
删除
name=classmates.pop()
print name
print classmates
name=classmates.pop(2)
print name
print classmates
输出如下:
Adam
['Michael', 'Jack', 'Bob', 'Tom']
Bob
['Michael', 'Jack', 'Tom']
替换
classmates[1]='Sarah'
print classmates
输出如下:
['Michael', 'Sarah', 'Tom']

list里面的元素的数据类型也可以不同,比如:

L=['Apple',123,True]

list元素也可以是另一个list,比如:

s=['python','java',['C','C++'],'swift']
print len(s)
print s
print s[2][1]
输出如下:
4
['python', 'java', ['C', 'C++'], 'swift']
C++

元组

另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改,
比如同样是列出同学的名字:

classmates = ('Michael', 'Bob', 'Tracy')
print classmates
print classmates[1],classmates[-1]
输出如下:
('Michael', 'Bob', 'Tracy')
Bob Tracy

只有1个元素的tuple定义时必须加一个逗,避免t=(1)即t=1

t=(1,)
“可变的”tuple
t = ('a', 'b', ['A', 'B'])
t[2][0]='X'
t[2][1]='Y'
print t
输出如下:
('a', 'b', ['X', 'Y'])

流程控制语句

if 语句

例如输出一个整数的绝对值

a=-100
if a>=0:
    print a
else:
    print -a
age=19
if age >= 18:
    print 'adult'
elif age >= 6:
    print 'teenager'
else:
    print 'kid'
输出如下:
100
adult

循环

for循环

names = ['Michael', 'Bob', 'Tracy']
for name in names:
    print name
range
a=range(0,20,4)#start 0 to 20 step 4
print a
a=range(21)# start 1 to 21 step 1 
print a
for i in range(11):
    print i
输出如下:
[0, 4, 8, 12, 16]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
0
1
2
3
4
5
6
7
8
9
10

while

n=0
while n<=2:
    print n
    n=n+1
输出如下:
0
1
2

dict

Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键值(keyvalue)存储,具有极快的查找速度。
dict有以下几个特点:
* 查找和插入的速度极快,不会随着key的增加而增加;
* 需要占用大量的内存,内存浪费多。

举个例子,假设要根据同学的名字查找对应的成绩,如果用list实现,需要两个list:

names = ['Michael', 'Bob', 'Tracy']
scores = [95, 75, 85]

每次需要两个数组都需要查找
如果用dict实现,只需要一个“名字”“成绩”的对照表,直接根据名字查找成绩,无论这个
表有多大,查找速度都不会变慢。用Python写一个dict如下:

d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
print d['Michael']
输出如下:
95

插入

d['Adam']=99
print d
输出如下:
{'Bob': 75, 'Michael': 95, 'Tracy': 85, 'Adam': 99}

修改

d['Bob']=50
print d
输出如下:
{'Bob': 50, 'Michael': 95, 'Tracy': 85, 'Adam': 99}

判断是否在字典中

e='Thomas' in d
print e
输出如下:
False

删除:

x=d.pop('Bob')
print x
print d
输出如下:
50
{'Michael': 95, 'Tracy': 85, 'Adam': 99}

dict是用空间来换取时间的一种方法

dict可以用在需要高速查找的很多地方,在Python代码中几乎无处不在,正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象。这是因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。这个通过key计算位置的算法称为哈希算法(Hash)。要保证hash的正确性,作为key的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key:

set

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
要创建一个set,需要提供一个list作为输入集合:

s=set([1,2,3])
print s
输出如下:
set([1, 2, 3])

增加元素和删除元素

s.add(4)
s.remove(2)
print s
输出如下:
set([1, 3, 4])

交集、并集

set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作

s1 = set([1, 2, 3])
s2 = set([2, 3, 4])
s3=s1 & s2
print s3
s3=s1 | s2
print s3
输入如下:
set([2, 3])
set([1, 2, 3, 4])

函数

调用函数
Python内置了很多有用的函数,我们可以直接调用。
要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数。可以直接从Python的官方网站查看文档
也可以在交互式命令行通过help(abs)查看abs函数的帮助信息。
调用abs函数:

>>> help(abs)
Help on built-in function abs in module builtins:

abs(x, /)
    Return the absolute value of the argument.

>>>

定义函数

def my_abs(x):
    if x>=0:
        return x;
    else:
        return  -x;
print my_abs(-1000)
输出如下:
1000

空函数

def noFunction():
    pass

传参类型

限制传入参数类型,数据类型检查可以用内置函数isinstance实现:

def my_abs(x):
    if not isinstance(x,(int,float)):
        print 'TypeError'
    if x>=0:
        return x;
    else:
        return  -x;
print my_abs('A')
输出如下:
TypeError

返回多个值

其实是返回一个tuple 括号被省略

def move(x,y):
    x=x+20
    y=y+20
    return x,y
x,y=move(100,100)
print x,y
t=move(100,100)
print t
输出如下:
120 120
(120, 120)

默认参数

考虑一个计算 xn 的函数

def power(x,n):
    ans=1;
    while n>0:
        ans=ans*x;
        n=n-1;
    return ans
print power(2,10)
输出如下:
1024

若其中大量的计算都是 x2 可以写成如下函数

def power(x,=2):
    ans=1;
    while n>0:
        ans=ans*x;
        n=n-1;
    return ans
print power(5)#相当于power(5,2)
输出如下:
25

多个默认参数

def enroll(name, gender, age=6, city='Beijing'):
    print 'name:', name
    print 'gender:', gender
    print 'age:', age
    print 'city:', city
enroll('Tom','F',city='ShangHai')
输出如下:
name: Tom
gender: F
age: 6
city: ShangHai

比如调用enroll('Tom','F',city='ShangHai'),意思是,city参数用传进去的值,其他默认参数继续使用默认值。

默认参数必须指向不变对象

例如:

def add_end(L=[]):
    L.append('END')
    return L
print add_end()
print add_end()
print add_end()
输入如下:
['END']
['END', 'END']
['END', 'END', 'END']

Python函数在定义的时候,默认参数L的值就被计算出来了,即[],因为默认参数L也是一个变量,它指向对象[],每次调用该函数,如果改变了L的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[]了
可以利用None这个不变对象来实现

def add_end(L=None):
    if L is None:
        L = []
    L.append('END')
    return L
print add_end()
print add_end()
print add_end()
输出如下:
['END']
['END']
['END']

可变参数

比如计算 a2+b2+c2+...+n2 可以利用传入一个list或者tuple进去

def sum(numbers):
    ans=0
    for i in numbers:
        ans=ans+i*i
    return ans
print sum([1,2,3,4])
输出如下:
30

利用可变参数,调用函数的方式可以简化

def sum(*numbers):
    ans=0
    for i in numbers:
        ans=ans+i*i
    return ans
print sum(1,2,3,4)
输出如下:
30

或者写成print sum(*[1,2,3,4])

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值