在python中,数据以对象的形式出现,对象无非是内存中的一部分,包含数值和相关操作的集合。

python中没有char类型,单个字符同样是字符串类型。

序列 序列中的元素包含了一个从左到右的顺序。从严格意义上来说,字符串是单个字符的字符串的序列。其他类型的序列还包括列表和元组。

序列的操作
len()取长
索引,以0开始
反向索引

S = "Spam"
S[-1] = "m"
S[-1] = "a"

切片(slice)操作:X[I:J]取出X中从偏移量I到但不包括偏移量为J的内容,结果返回一个新的对象。

S[1:]
'pam'
S[0:3]
'Spa'
S[:3]
'Spa'
S[:-1]
'Spa'
S[:]
'Spam'

不可变性
数字、字符串、元组不可变,列表、字典可变。

类型特定的方法
str.find() 返回子字符串的索引,没有则返回-1。
str.replace() 对全局进行搜索和替换。
str.split()
str.upper()
str.lower()
str.strip()

尽管序列操作是通用的,但方法不通用(虽然有些类型共享某些方法名,即方法名相同,但是字符串的方法只能用于字符串)

字符串格式化操作
'%s is %s'%('i','human')
'{0} is {1}'.format("i", "human")

转义字符?原生字符(raw)

列表

特定操作
append() 末尾添加
list.pop([index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
sort() 排序
reverse() 反向

列表解析
列表解析表达式,提供了一种处理像矩阵这样结构的强大工具。例如我们需要充列举的矩阵中提取出第二列,因为矩阵是嵌套存储的,所以通过简单的索引可获取行,通过列表解析也可以获得列。

m = [[1,2,3],[4,5,6],[7,8,9]]
row0 = [row[0] for row in m]
row0
#[1,4,7]

还可以更复杂:
row2 = [row[1] for row in m if row[1] % 2 == 0]
row2的结果是[2,8]。先取出列表结果,再过滤奇数。
row3 = [row[1] +1 for row in m]
row3的结果是[3,6,9]。同样先取出列表结果,再每个元素都加1。

列表解析来源于集合的概念。还可以创建生成器、集合、字典。

字典

python中的字典是完全不同的东西:它们不是序列,而是一种映射(mapping)。映射是一个其他对象的集合,但是它们是通过键而不是相对位置来存储的。没有可靠的从左到右的顺序。简单地将键映射到值。

字典使用大括号。

键的排序:for循环
作为映射,字典仅支持通过键获取元素。因为字典不是序列,所以如果我们建立一个字典,并打印出来,它的键也许会与我们输入时的顺序不同。如果我们需要强调某种顺序的时候,一个常用的解决方法是通过字典的keys方法收集一个键的列表,使用列表的sort()方法进行排序,然后for循环。

sorted()方法对字典的key进行排序。

迭代和优化
迭代协议?从左到右地扫描一个对象的每个python工具都使用迭代协议。字典是可迭代的对象,可以用一个next返回后续的键。
迭代(iterate) - 按顺序访问线性结构中的每一项
遍历(traversal) - 按规则访问非线性结构中的每一项

squares = [x ** 2 for x in [1,2,3,4,5]]
squares
[1,4,9,16,25]

等同于:

squares = []
for x in [1,2,3,4,5]:
	squares.append(x ** 2)
squares
[1,4,9,16,25]

元组(tuple)

小括号,不可变,属于序列,支持任意类型,任意嵌套和常见的序列操作。

拥有两个专有的可调用方法:
T.index():查找元素的第一个索引值
T.count():查找元素在tuple中出现的次数

tuple可以转换成list,list也可以转换成tuple

文件

文件对象是python代码对电脑上外部文件的主要接口。

f = open("E:\Python-text-project\data.txt",'w')
f.write("hello world")
f.close()
posted on 2018-10-10 16:38  雪山老狐  阅读(203)  评论(0编辑  收藏  举报