python2-numpy教程
https://zhuanlan.zhihu.com/p/20878530?refer=intelligentunit
python3中文教程
http://www.runoob.com/python3/python3-tutorial.html
python3英文教程
https://docs.python.org/3.6/tutorial/index.html
python中有六个标准数据类型:
数字number、字符串、列表、元组、集合、字典
数字
理解
python3支持int、float、bool、complex数字类型
使用
a, b, c, d = 20, 5.5, True, 4+3j #创建number对象
print(type(a), type(b), type(c), type(d)) #type()函数可以查询变量所指的对象类型
isinstance(a, int) #type isinstance 区别: type()不会认为子类是一种父类类型。isinstance()会认为子类是一种父类类型。
class A:
pass
class B(A):
pass
isinstance(A(), A) # returns True
type(A()) == A # returns True
isinstance(B(), A) # returns True
type(B()) == A # returns False
>>>5 + 4 # 加法
9
>>> 4.3 - 2 # 减法
2.3
>>> 3 * 7 # 乘法
21
>>> 2 / 4 # 除法,得到一个浮点数
0.5
>>> 2 // 4 # 除法,得到一个整数
0
>>> 17 % 3 # 取余
2
>>> 2 ** 5 # 乘方
32
字符串
理解
没有什么
使用
str = 'Runoob'
print (str) # 输出字符串
print (str[0:-1]) # 输出第一个到倒数第二个的所有字符
print (str[0]) # 输出字符串第一个字符
print (str[2:5]) # 输出从第三个开始到第五个的字符
print (str[2:]) # 输出从第三个开始的后的所有字符
print (str * 2) # 用*输出字符串两次
print (str + "TEST") # 用+号,连接字符串
print('Ru\noob') #反斜杠转义特殊字符
print(r'Ru\noob') #不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串
#反斜杠(\)可以作为续行符,表示下一行是上一行的延续。也可以使用 """...""" 或者 '''...''' 跨越多行
#Python中的字符串不能改变。
列表lists:
理解
结合了C链表的可变和数组的下标访问
使用
基本
x=[5,2,0] #创建列表
print (x) #打印整个列表
print (x[2]) #打印第三个
print (x[-1]) #打印最后一个数字,注意不是打印倒数第二个,因为x[0]已经指定为第一个了
x[2]='hello' #赋值
x.append('GaoJiaBao') #在列表后加一个元素,和C的栈很像,不足是只能加一个元素,增加一串可以用extend,+,+=
x.extend(x) #x后增加x
x=x+x x+=x #二者结果和extend一样,不过前者实际上生成了一个新列表
y=x.pop() #弹出一个元素并返回该元素,和C的栈很像
切片
nums = range(5) # range is a built-in function that creates a list of integers
print (nums) # Prints "[0, 1, 2, 3, 4]"
print (nums[2:4]) # Get a slice from index 2 to 4 (exclusive); prints "[2, 3]"
print (nums[2:]) # Get a slice from index 2 to the end; prints "[2, 3, 4]"
print (nums[:2]) # Get a slice from the start to index 2 (exclusive); prints "[0, 1]"
print (nums[:]) # Get a slice of the whole list; prints ["0, 1, 2, 3, 4]"
print (nums[:-1]) # Slice indices can be negative; prints ["0, 1, 2, 3]"
nums[2:4] = [8, 9] # Assign a new sublist to a slice
print (nums) # Prints "[0, 1, 8, 8, 4]"
注意“:”后面的那个元素不包含,前面的包含
循环loops
animals = ['cat', 'dog', 'monkey']
for animal in animals:
print (animal)
推导list comprehensions
nums = [0, 1, 2, 3, 4]
squares = []
for x in nums:
squares.append(x ** 2)
print squares # Prints [0, 1, 4, 9, 16]
nums = [0, 1, 2, 3, 4]
squares = [x ** 2 for x in nums]
print squares # Prints [0, 1, 4, 9, 16]
#二者结果相同
nums = [0, 1, 2, 3, 4]
even_squares = [x ** 2 for x in nums if x % 2 == 0]
print even_squares # Prints "[0, 4, 16]"
#列表推导包括条件
字典dictionary
理解
C中没见过,Java中的Map?
使用
基本:
d={'cat':'cute','dog':'furry'}
print (d['cat']) #打印“cute”
print ('cat' in d) #如果有“cat”,打印“TRUE”
d['fish'] = 'wet' #在字典里加一个词条
print (d['monkey']) #如果没有这个词条,会发生什么呢,出现错误
print (d.get('monkey', 'N/A')) #使用d.get,没有键值的时候回返回后面的值
del d['fish'] #删除fish键值
d.clear() del d #删除字典
#字典中的键值必须是不可变的,可以是数字、字符串,不能是列表。
循环
d = {'person': 2, 'cat': 4, 'spider': 8}
for animal in d:
legs = d[animal]
print ('A %s has %d legs' % (animal, legs))
# Prints "A person has 2 legs", "A spider has 8 legs", "A cat has 4 legs"
推导
nums = [0, 1, 2, 3, 4]
even_num_to_square = {x: x ** 2 for x in nums if x % 2 == 0}
print (even_num_to_square) # Prints "{0: 0, 2: 4, 4: 16}"
集合sets
理解
无序集合
使用
基本
animals = {'cat', 'dog'}
print ('cat' in animals) # 检查集合中有无该元素; prints "True"
print ('fish' in animals) # prints "False"
animals.add('fish') # 加一个元素
print ('fish' in animals) # Prints "True"
print (len(animals)) # 求集合元素个数; prints "3"
animals.add('cat') # 如果已经存在,什么事情都不会发生
print (len(animals)) # Prints "3"
animals.remove('cat') # 移除集合元素
print (len(animals)) # Prints "2"
循环
animals = {'cat', 'dog', 'fish'}
for idx, animal in enumerate(animals):
print ('#%d: %s' % (idx + 1, animal))
# Prints "#1: fish", "#2: dog", "#3: cat"
推导
from math import sqrt
nums = {int(sqrt(x)) for x in range(30)}
print (nums) # Prints "set([0, 1, 2, 3, 4, 5])"
元组
理解
元组与列表的不同在于,元组是不能修改的
使用
tup1 = ('Google', 'Runoob', 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = "a", "b", "c", "d"; #创建元组
print (tup2[1:3]) #截取第2-3个元素
tup4=tup1+tup2 #元组元素是不允许修改的,但是可以连接
del tup4 #元组的元素不能删除,但可以整个一起删除