作为码农,熟悉一门语言,看别的语言的代码,都是差不多的。比如我熟悉java,看python应该能看懂—-但是,装逼的我,真的看了,发现还是有看不懂的,也就是python的特性语法。这里记录一下,以供忘记了,来回忆一下。
字符串是 Python 中最常用的数据类型。我们可以使用引号(‘或”)来创建字符串。
创建字符串很简单,只要为变量分配一个值即可。例如:
var1 = 'Hello World!'
var2 = "Python Runoob"
Python不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。
Python访问子字符串,可以使用方括号来截取字符串,如下实例:
#!/usr/bin/python
var1 = 'Hello World!'
var2 = "Python Runoob"
print "var1[0]: ", var1[0]
print "var2[1:5]: ", var2[1:5]
以上实例执行结果:
var1[0]: H
var2[1:5]: ytho
序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。
Python有6个序列的内置类型,但最常见的是列表和元组。
序列都可以进行的操作包括索引,切片,加,乘,检查成员。
此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。
列表的数据项不需要具有相同的类型。
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:
list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5 ]
list3 = ["a", "b", "c", "d"]
与字符串的索引一样,列表索引从0开始。列表可以进行截取、组合等。
列表截取
>>>L = ['Google', 'Runoob', 'Taobao']
#读取列表中第三个元素
>>> L[2]
'Taobao'
#读取列表中倒数第二个元素
>>> L[-2]
'Runoob'
#从第二个元素开始截取列表
>>> L[1:]
['Runoob', 'Taobao']
>>>
Python的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
如下实例:
tup1 = (‘physics’, ‘chemistry’, 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = “a”, “b”, “c”, “d”;
创建空元组
tup1 = ();
元组中只包含一个元素时,需要在元素后面添加逗号
tup1 = (50,);
元组与字符串类似,下标索引从0开始,可以进行截取,组合等。
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
一个简单的字典实例:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
也可如此创建字典:
dict1 = { 'abc': 456 };
dict2 = { 'abc': 123, 98.6: 37 };
访问字典里的值
把相应的键放入熟悉的方括弧,如下实例:
实例
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};
print "dict['Name']: ", dict['Name'];
print "dict['Age']: ", dict['Age'];
以上实例输出结果:
dict['Name']: Zara
dict['Age']: 7
Python sequence slice addresses can be written as a [start:end:step] and any of start, stop or end can be dropped.
Python序列切片地址可以写为[开始:结束:步长],其中的开始和结束可以省略。
举例:
>>>range(10)[:10:2]
# 开始start省略时,默认从第0项开始
[0,2,4,6,8]
#结尾end省略的时候,默认到数组最后。
>>>range(10)[1::2]
[1,3,5,7,9]
#step省略默认为1
range(10)[0:1:]
[0,1]
#当step等于负数的时候,从右向左取数。
>>>range(5)[::-1]
[4,3,2,1,0]
>>>range(10)[::-2]
[9,7,5,3,1]
a[start:end]:取得范围为[start,end)
a=[[1,2,3],[4,5,6],[7,8,9]]
b=a[1:2]
[[4, 5, 6]]
a[:end]:取得范围为[0,end)
a=[[1,2,3],[4,5,6],[7,8,9]]
b=a[:1]
[[1, 2, 3]]
a[start:]:取得范围为从start到最后(包括最后)
a=[[1,2,3],[4,5,6],[7,8,9]]
b=a[1:]
[[4, 5, 6], [7, 8, 9]]
数组几乎跟列表差不多,但数组不是python的数据类型,列表是。数组的类型必须全部相同,list不用。数组主要在numpy中封装的array使用,很强大。array的创建:参数既可以是list,也可以是元组
list = [[1,2,3],[4,5,6]]
b=np.array(list)#列表转数组
print(b)
print(b.shape)#打印数组shape,结果是(2, 3)
newlist = b.tolist()#数组转列表
print(newlist)
yuanzu = (1, 2, 3)
c=np.array(yuanzu)#元祖转为列表
数组除了用array函数创建,numpy还有很多函数,可以方便创建数组。如
np.arange(a,b,c) 表示产生从a-b不包括b,间隔为c的一个array
数组没有逗号隔开!!列表有。请看打印
数组:
[[1 2 3]
[4 5 6]]
列表:
[[1, 2, 3], [4, 5, 6]]
shape是维度的意思。
import numpy as np
x = np.array([1, 2])
y = np.array([[1],[2]])
print(x.shape) #x[1,2]的shape值(2,),意思是一维数组,数组中有2个元素
print(y.shape) # y[[1],[2]]的shape值是(2,1),意思是一个二维数组,每个数组中有1个元素
>>>
(2,)
(2, 1)
z直接看代码跟结果吧。
# Python
import numpy as np
#冒号在二维数组中的使用
a = np.arange(25).reshape(5,5)#二维数组
print(a)
print('\na[:,0:2] = ')#第一维(行)全部取,第二维(列)取0~2(不包括2)
b = a[:,0:2]
print(b)
print('\na[:,1] = ')#第一维(行)全部取,第二维(列)取第1列,只写一个数字,会降维
c = a[:,1]
print(c)
print('\na[1] = ')#逗号都不写,认为第一维(行)取1,第二维(列)取所有
d = a[1]
print(d)
k = a[1:-2,1:-1] #第一行~倒数两行,第一列~倒数一列,其实就是a[1:3,1:4]
print('\na[1:-2,1:-1] = ')
print(k)
#三维数组
print('\n\n----------------\n\n')
a = np.arange(48).reshape(4,4,3)#三维的
print('a=')
print(a)
f = a[:,:,0] #第三维写数字,会降低为二维
print('\na[:,:,0] = ')
print(f)
g = a[:,:,1]
print('\na[:,:,1] = ')
print(g)
matrix是array的一个特例,它只能是二维,而array可以是多维的。
list2 = [[1,2,3],[4,5,6]]#二维
list3 = [[[1,2,3],[4,5,6]], [[1,2,3],[4,5,6]]]#三维
mat2 = np.mat(list2)#转为矩阵
print(mat2)
mat3 = np.mat(list3)#会出现错误(ValueError("matrix must be 2-dimensional")),三维列表,无法转,矩阵只能二维
python菜鸟教程