Python学习记录
Python学习记录
用
,
表示一个空格当你输入
name = raw_input()
并按下回车后,Python交互式命令行就在等待你的输入了。这时,你可以输入任意字符,然后按回车后完成输入。再次输入name
则可以直接显示刚才输入的内容以#开头的语句是注释,注释是给人看的,可以是任意内容,解释器会忽略掉注释。其他每一行都是一个语句,当语句以冒号“:”结尾时,缩进的语句视为代码块
数据类型:int, float, string
如果字符串内部既包含’又包含”怎么办?可以用转义字符\来标识
转义字符\可以转义很多字符,比如
\n
表示换行,\t
表示制表符,字符\
本身也要转义,所以\\
表示的字符就是\
如果字符串里面有很多字符都需要转义,就需要加很多
\
,为了简化,Python还允许用r''
表示''
内部的字符串默认不转义如果字符串内部有很多换行,用
\n
写在一行里不好阅读,为了简化,Python允许用'''...'''
的格式表示多行内容字符串
1
2
3
4ord('A')
65
chr(65)
'A'len()
函数可以返回字符串的长度由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:
1
2#!/usr/bin/env python
# -*- coding: utf-8 -*-%运算符就是用来格式化字符串的。在字符串内部,
%s
表示用字符串替换,%d
表示用整数替换,有几个%?
占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?
,括号可以省略。
常见的占位符有:
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数1
2
3
4'Hello, %s' % 'world'
'Hello, world'
'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'列出班里所有同学的名字,就可以用一个list表示:
1
2
3
4
5
6
7
8
9
10
11
12
13'Michael', 'Bob', 'Tracy'] classmates = [
classmates
['Michael', 'Bob', 'Tracy']
#显示某一个
1] classmates[
'Bob'
#显示最后一个
1] classmates[-
'Tracy'
#添加
'Adam') classmates.append(
#插入
1, 'Jack') classmates.insert(要删除指定位置的元素,用
pop(i)
方法,其中i是索引位置一种有序列表叫元组:
tuple
。tuple
和list
非常类似,但是tuple
一旦初始化就不能修改Python的缩进规则,如果
if
语句判断是True
,就把缩进的两行print
语句执行了,否则,什么也不做。1
2
3
4
5
6
7age = 3
if age >= 18:
print 'adult'
elif age >= 6:
print 'teenager'
else:
print 'kid'elif
是else if
的缩写if
语句执行有个特点,它是从上往下判断,如果在某个判断上是True
,把该判断对应的语句执行后,就忽略掉剩下的elif
和else
.求和
for
求和1
2
3
4sum = 0
for x in range(101):
sum = sum + x
print sumwhile
求和1
2
3
4
5
6sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print sum从
raw_input()
读取的内容永远以字符串的形式返回Python内置了字典:
dict
的支持,dict
全称dictionary
,在其他语言中也称为map
,使用键-值(key-value)存储,具有极快的查找速度。1
2
3'Michael': 95, 'Bob': 75, 'Tracy': 85} d = {
'Michael'] d[
95要删除一个key,用
pop(key)
方法,对应的value
也会从dict
中删除:1
2
3
4'Bob') d.pop(
75
d
{'Michael': 95, 'Tracy': 85}set
和dict
类似,也是一组key
的集合,但不存储value
。要创建一个set,需要提供一个list作为输入集合:1
2
3set([1, 2, 3]) s =
s
set([1, 2, 3])传入的参数
[1, 2, 3]
是一个list
,而显示的set([1, 2, 3])
只是告诉你这个set
内部有1,2,3这3个元素,显示的[]不表示这是一个list。
通过add(key)
方法可以添加元素到set中,通过remove(key)方法可以添加元素到set中。
set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。Python的函数
比较函数
cmp(x, y)
就需要两个参数,如果x<y
,返回-1
,如果x==y
,返回0
,如果x>y
,返回1
Python内置的常用函数还包括数据类型转换函数,比如
int()
函数可以把其他数据类型转换为整数:1
2
3
4
5
6
7
8
9
10
11
12
13
14int('123')
123
int(12.34)
12
float('12.34')
12.34
str(1.23)
'1.23'
100) unicode(
u'100'
bool(1)
True
bool('')
False在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。
1
2
3
4
5def my_abs(x):
if x >= 0:
return x
else:
return -x如果想定义一个什么事也不做的空函数,可以用pass语句
1
2def nop():
pass对参数类型做检查,只允许整数和浮点数类型的参数。数据类型检查可以用内置函数
isinstance
实现:1
2
3
4
5
6
7def my_abs(x):
if not isinstance(x, (int, float)):
raise TypeError('bad operand type')
if x >= 0:
return x
else:
return -x定义可变参数和定义list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数
1
2
3
4
5def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum在Python中定义函数,可以用必选参数、默认参数、可变参数和关键字参数,这4种参数都可以一起使用,或者只用其中某些,但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。
1
2def func(a, b, c=0, *args, **kw):
print 'a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw
在函数调用的时候,Python解释器自动按照参数位置和参数名把对应的参数传进去。
1 | 1, 2) func( |
最神奇的是通过一个tuple和dict,你也可以调用该函数
1 | 1, 2, 3, 4) args = ( |
>>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
取前三个1
2
3
4
5
6
7r = []
3 n =
for i in range(n):
r.append(L[i])
r
['Michael', 'Sarah', 'Tracy']默认情况下,dict迭代的是key。如果要迭代value,可以用
for value in d.itervalues()
,如果要同时迭代key和value,可以用for k, v in d.iteritems()
。
如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:1
2
3
4
5
6
7from collections import Iterable
isinstance('abc', Iterable) # str是否可迭代
True
isinstance([1,2,3], Iterable) # list是否可迭代
True
isinstance(123, Iterable) # 整数是否可迭代
False列表生成式
1
2for x in range(1, 11)] [x * x
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]map()
函数接收两个参数,一个是函数,一个是序列,·map
将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回1
2
3
4
5def f(x):
return x * x
...
map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
[1, 4, 9, 16, 25, 36, 49, 64, 81]