Python学习笔记–0.Python基础
0.Unix下直接运行.py文件
在文件开头加入#!/usr/bin/env python
,然后在命令行中修改权限,赋予其可执行的权限。$ chmod a+x hello.py
1.输入输出
- 命令行输入直接用
raw_input()
,括号里可以放提示语。 得到的是一个字符串,要转换成其他数据类型要用强制类型转换。如int(raw_input())
命令行输入可以用
print
,后面可以带各种格式的数据,连接用,
,但是需要注意,每次遇到,
均会输出一个空格。>>>name = raw_input('please input your name:') >>>print 'User name:', name User name: MrZigZag
2.语法基础
- Python以缩进来进行控制,因此尽量用4个空格来做缩进。缩进会使代码的复制粘贴失效,因此应该尽量写出缩进较少的代码。
- 大小写敏感
#
为注释标记
3.数据类型
- 整数可用16进制,
0xffff
- 浮点数直接写即可,但是也可以用科学记数法,如
1.23e-5
- 字符串的表示可以用双引号,也可以用单引号,两者等价。
'Hello World!'
="Hello World!"
,如果'
本身也是一个字符,则用"
包围起来,如"I'm OK"
。 - 转义符用
\
来转义,需要\
时直接用\\
表示。同时提供字符串不转义的方法,r'\n'
直接就是\n
。 - 多行字符串用
'''...'''
表示。 - 特殊值 布尔值
True
和False
,空值None
, - 常量,在Python中,通常用全部大写的变量名表示常量。
PI = 3.14159265359
4.编码
编码方式
Python使用UTF-8编码,一般英语字符串使用ASCII码表示。提供ord()
和chr()
来转换数字和字母。
>>> ord('A')
65
>>> chr(65)
'A'
要使用中文时,需添加标记以强制使用Unicode,Unicode字符u'...'
,比如
>>> print u'中文'
中文
>>> u'中'
u'\4e2d'
转换可以用点取.encode('utf-8')
,同时可用decode('utf-8')
反向转换。
>>> print '\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
中文
可用len()
方法获取在Unicode中字符串的长度。
字符串格式化
Python字符串的格式化方式与C相同,都是用%
来实现。
>>> print 'This is %s university, the No.%d university in %s.' % ('Peking', 1, 'China')
This is Peking university, the No.1 university in China.
整数%d
, 浮点数%f
,加数字还可以补0和小数位数。%2d
, %02d
, %02f
,不确定用什么时,%s
永远有效。
5.List
List是Python内置的列表,有序的集合,类似于C++和Java的vector,可以随时添加和删除元素。定义时用[...]
。访问可用正数索引,或者负数索引(从后往前取)
>>> nums = [1, 2, 3, 4]
>>> nums[1]
2
>>> nums[-1]
4
- 添加到末尾用
append()
方法 - 插入到指定位置则用
insert(i, info)
- 删除末尾用
pop()
- 删除指定元素
pop(i)
修改指定元素时直接改即可。
>>> nums.append(5) >>> nums.insert(0, -1) >>> nums.pop(); >>> nums.pop(4);
list里边的元素类型可以不同,例如mylist = ['apple', 12, True]
list里边还可以嵌入一个list,要读取list内嵌的list直接用多维数组的方式。
>>> p = [1, 2, 3]
>>> q = [0, p, 4, 5]
>>> len(q)
4
>>> q[1][1]
2
6.Tuple
Tuple与list非常类似,但是一旦被初始化就不能修改,有点像一组固定的指针。访问类似于list,但不能赋值。
空Tuple直接写成()
,只有元素的tuple需要在定义时加一个,
以免表示为小括号。
>>> t = ()
>>> t = (1, )
>>> t
(1,)
Tuple不能被修改是指Tuple本身的元素指向固定,不能被修改。但是如果元素是list等可变类型,则可以对list进行修改。因此,tuple是固定了顶层的元素,而内部的元素可根据运行时需要修改。
>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])
7.跳转
if
没有括号,直接跟在后面,但是条件结束要加一个:
,else if用的是elif
if age >= 18:
print 'adult'
elif age >= 6:
print 'teenager'
else:
print 'kid'
for
循环,类似于iterator,迭代获取list或者tuple中的元素,for x in ...
。如果要获取一段整数序列,可以用range(a, b)
获得从a开始到b-1的整数序列。
for x in range(2, 10):
sum = sum + x
另一种循环是while
循环,记得类似于if,要加冒号。
8.Dict
Dict类似于Map,提供key-value
的存储方式,直接用key即可获得value。key要求不可变,只能用字符串、整数等,不能用list。而value可以是任何数据类型。初始化用{key:value}
。
访问某一个pair,可以直接用key,类似于list的访问,score['MrZigZag']
。要避免key不存在的错误,先用in
方法判断是否有这个key,或者直接用get(key, value)
方法,找不到直接反悔value
。
>>> 'Thomas' in score
False
>>> score.get('Thomas', -1)
-1
删除对象用pop(key)
。
9.Set
Set类似于Dict,也是一组key的组合,但是只存储key不存储value。在Set中没用重复的key。
Set的创建需要一个list作为输入。用add(key)
添加key,但是重复添加的key只有一个。remove(key)
删除元素。
>>> s = set([1, 2, 3])
>>> s.add(3)
>>> s
set([1, 2, 3])
>>> s.remove(3)
>>> s
set([1, 2])
Set是一个集合,可以用来进行交集s1 & s2
和并集s1 | s2
操作。