2017年1月

python要点拾零--数据类型

1:输入输出

  • print()在括号加上字符串,就可以输出;并且接受多个字符串,用逗号隔开
print('The quick brown fox', 'jumps over', 'the lazy dog')
  • print()也可以打印整数,或者计算结果
print('100 + 200 =', 100 + 200)
100 + 200 = 300
  • 输入:input()
  • Python程序是大小写敏感的

2:字符串编码

防止多语言混合的文本出现乱码,Unicode应用而生;ASCII编码和Unicode编码的区别:ASCII编码是1个字节,而Unicode编码通常是2个字节;全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。本着节约的精神,又出现了把Unicode编码转化为“可变长编码”的UTF-8编码;在计算机内存中,统一使用Unicode编码读取,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码

  • ord()函数获取字符的整数;chr()函数把编码转换为对应的字符
  • len()函数计算str包含多少个字符

3:列表

list是一种有序的集合,可以放不同的数据类型 classmates = ['Michael', 'Bob', 'Tracy']

  • len()函数可以获得list元素的个数,可用索引访问每一个元素
  • append()可以往list中追加元素到末尾
classmates.append('Adam')
  • insert()可以把元素添加到指定的位置
classmates.insert(1, 'Jack')
  • pop()删除末尾的元素,括号加上元素的索引位置,可以删除指定位置的元素

4:元组tuple

另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改;classmates这个tuple不能变了,它也没有append(),insert()这样的方法;因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple
注意:因为括号()既可以表示tuple,又可以表示数学公式中的小括号,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。所以,只有1个元素的tuple定义时必须加一个逗号,来消除歧义

  • tuple所谓的“不变”是说,tuple的每个元素,指向永远不变
    list和tuple是Python内置的有序集合,一个可变,一个不可变。根据需要来选择使用它们

4:dict字典

在其他语言中也成为map,使用键值对存储

  • 判断key是否存在:in,d.get("key")
  • pop()删除key

和list比较,dict有以下几个特点:查找和插入的速度极快,不会随着key的增加而变慢;需要占用大量的内存,内存浪费多。
注意:dict可以用在需要高速查找的很多地方,在Python代码中几乎无处不在,正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象
在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key

5:set集合

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key

  • 重复元素在set中自动被过滤
  • 通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果
  • 通过remove(key)方法可以删除元素
  • set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作
>>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}

注意:set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。试试把list放入set,看看是否会报错
小结:使用key-value存储结构的dict在Python中非常有用,选择不可变对象作为key很重要,最常用的key是字符串

Python入门

1:Python注释

#第一个注释:单行注释以 # 号开头
print("Hello World!")

#多行注释用两个三引号'''包含起来
'''
第一行注释
第二行注释
'''

2:Python的行与缩进

Python 最具特色的就是使用缩进来表示代码块,不需要使用大括号。缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数,缩进不一致会导致代码运行错误

正确缩进的示例如下:
纯文本复制
if True:
    print("True")
else:
    print("False")

错误缩进的示例如下:
if True:
    print("True")
else:
print("False")

多行语句
Python 通常是一行写完一条语句,但语句很长的话,可以通过反斜杠()来实现多行语句。

3:变量

a = 42
print(a)

注意:Python 的变量无须提前声明,赋值的同时也就声明了变量

4:数据类型

  • Python 中拥有 6 大数据类型:number(数字)、string(字符串)、list(列表)、tuple(元组)、sets (集合)、dictionary(字典)
  • Python 3 支持 4 种类型的数字:int(整数类型)、float(浮点类型)、bool(布尔类型)、complex (复数类型)
  • 在 Python 3 中可以使用 type() 函数来查看数据类型

Python3 所支持的运算类型包括加法、减法、除法、整除、取余、乘法和乘方:

print((3+1)) #加法运算,输出结果是 4
print((8.4-3)) #减法运算,输出结果是5.4
print(15/4) #除法运算,输出结果是 3.75
print(15//4) #整除运算,输出结果是 3
print(15%4) #取余运算,输出结果是 3
print(2*3) #乘法运算,输出结果是 6
print(2**3) #乘方运算,输出结果是 8

5:字符串

字符串就是在单引号、双引号和三引号之间的文字,其中所有的空格和制表符都照原样保留。单引号与双引号的作用其实是一样的,但是当引号里包含单引号时,则该引号需使用双引号,例如:print("what’s your name?")。三引号可以指示一个多行的字符串,也可以在三引号中自由使用单引号和双引号

  • 原始字符串通过给字符串加上前缀 r 或 R 的方式指定,比如需要原样输出 n 而不是令其换行
print(r"Newlines are indicated by \n")
#输出结果是Newlines are indicated by \n
  • 字符串截取:字符串常量[start_index:end_index+1] 左闭右开
str = 'Lingyi'
print(str[0]) #输出结果为L
print(str[1:4]) #输出结果为ing
print(str[-1]) #输出结果为i

注意:不同的数据类型之间是不能进行运算的,但是,不同数据类型可以相互转换;“+”号用在字符串中间是连接符;相加的双方是数值型,此时“+”号是运算符

a = 1
b = 2
c = 'a'+'b'
print(c)
# ab

6:列表

Python 列表是任意对象的有序集合,列表写在中括号 [] 里,元素之间用逗号隔开。这里的任意对象,既可以是列表嵌套列表,也可以是字符串

list = ["Python",12,[1,2,3],3.14,True]
print(list)#运行结果为['Python', 12, [1, 2, 3], 3.14, True]
  • 列表删除操作可以使用 remove 方法
list = [1,2,3,4]
list.remove(3)
print(list)#运行结果是[1, 2, 4]

7:元组

元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号()里,元素之间则用逗号隔开

tuple = ('abc',76,'ly',898,5.2)
print(tuple[1:3])
#运行结果是[76,'ly']

8:集合set

集合(set)是一个无序不重复元素的序列,可以使用大括号 {} 或者 set() 函数创建集合。需要注意的是,一个空集必须使用 set() 函数创建而不能使用大括号 {},因为大括号 {} 是用来创建空字典的

age = {18,19,18,20,21,20}
print(age)
#运行结果是{18, 19, 20, 21}

9:字典

字典是一种可变容器模型,且可存储任意类型对象,用 {} 标识。字典是一个无序的键(key)值(value)对的集合

information = {
    'name':'liming',
    'age':'24'
}
print(information)
#运行结果是{'name': 'liming', 'age': '24'}
  • 字典增加数据时
information['sex'] = 'boy'
print(information)
#运行结果是{'name': 'liming', 'age': '24', 'sex': 'boy'}
  • 字典删除数据时,可以使用 del 函数
del information['age']
print(information)
#运行结果是{'name': 'liming', 'sex': 'boy'}

10:语句与函数

  • 条件语句
password = '12345'
if password == '12345':
    print('login sucess!')
else
    print('wrong password')
  • 循环语句:在 Python 中要注意缩进,条件语句根据缩进来判断执行语句的归属
sum = 0;
for i in range(1,10,1):#不包含 10,实际为1-9
    sum = i + sum
print(sum)

其中 range 表示范围,i 从 1(第 1 个参数)开始迭代,每次加 1(第 3 个参数),直到 i 变成了 10(第 2 个参数)结束,因此当 i=10 时不执行语句,for 循环是 9 次迭代

for 迭代变量 in 迭代次数:
    执行语句...

如果是列表或者字典,就不用 range() 函数,直接用列表或者字典,此时 i 表示列表或者字典中的元素

list = {1,2,3,4}
for i in list:
    print(i)
  • 函数

def(define 即定义)是创建函数的方法

自定义函数
def f(x):
    定义过程
    return f(x)

def y(x):
    y = 5*x + 2
    return y
#下面调用自定义函数y
d = y(5)
print(d)
#运行结果是 27