Python学习笔记1

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
  • 多行字符串'''...'''表示。
  • 特殊值 布尔值TrueFalse,空值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操作。