str与repr区别#
repr语法:repr[object]
返回一个可以表示对象的可打印的字符串,首先会生成一个这样的字符串,然后将其传给eval()可以重新生成同样的对象。但是repr所返回的对象更适合于解释器去阅读。在python中还有一个`这个反引号和repr()`作用一样。
str语法:str[objec]
返回一个可以表示对象的友好的可打印的字符串。对于字符串则返回本身,如果没有参数,则返回空字符串。str返回的对象更适合我们人类阅读(可以这么理解),str致力于返回一个可读性比较好的对象,返回的结果通常不会通过eval()去处理。
实例:
1 | a = 'Hello,kitty!' |
应用:
1 | tmp=42 |
input()与raw_input()区别#
使用input和raw_input都可以读取控制台的输入,但是input和raw_input在处理数字时是有区别的
纯数字输入
当输入为纯数字时
input返回的是数值类型,如int,float
raw_inpout返回的是字符串类型,string类型
输入字符串为表达式
input会计算在字符串中的数字表达式,而raw_input不会。
例子1:1
2
3
4
5
6
7
8
9
10
11
12raw_input_A = raw_input("raw_input: ")
raw_input: efg
input_A = input("Input: ")
Input: efg
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in <module>
NameError: name 'efg' is not defined
input_A = input("Input: ")
Input: "efg"
思考:
但 raw_input() 直接读取控制台的输入(任何类型的输入它都可以接收)。而对于 input() ,它希望能够读取一个合法的 python 表达式,即你输入字符串的时候必须使用引号将它括起来
例子2:
1 | raw_input_A = raw_input("raw_input: ") |
input( 1 + 3 ) 会返回 int 型的 4
序列#
python中有6中内建的序列:列表,元组,字符串,unicode字符串,buffer对象,xrange对象。

如果想创建一个占用10个元素的空间,却不包括任何有用的内容的列表:
sequence = [None] * 10
检查一个值是否在序列中用in
列表#
列表跟元组的区别在于,列表是可变的。列表功能强大![列表]](/img/p_02.jpg)
转换为列表的方法list#
list函数适用于所有类型的序列,不只是字符串1
2
3
4list('hello')
['h', 'e', 'l', 'l', 'o']
list('1234')
['1', '2', '3', '4']
列表操作#
列表除通用的序列操作外还有自己的操作
赋值#
1 | x=[1]*3 |
删除元素#
del name[3]
分片赋值#
可以用与原序列不等长的序列将分片替换1
2
3
4name = list('Perl')
name[1:] = list('ython')
name
['P', 'y', 't', 'h', 'o', 'n']
列表方法#
对象.方法(参数)
append#
1 | a =[1,2,3] |
count#
统计某个元素在列表中出现的次数
1 | x = [[1,2],1,1,[2,1,[1,2]]] |
extend#
注意extend与连接(+)的区别
extend:是在源列表中修改的;
连接+:会返回一个全新的列表;
所以:extend要比连接的操作效率高
1 | #extend |
index#
index方法:从列表中找出某个值第一次匹配的索引的位置。1
2
3a=['one','two','three']
a.index('two')
1
insert#
1 | a = [1, 2, 3, 4,6] |
pop#
pop是唯一一个既能修改列表又能返回元素值的列表方法1
2
3
4
5
6
7a = [1,2,3]
a.pop()
3
a
[1, 2]
a.pop(0)
1
remove#
remove:移除列表中某一个值第一个匹配项
reverse#
1 | a = [1, 2, 3] |
也可以用序列通用方法:list(reversed(x))
sort#
注意:sort方法用于在原位置对列表进行排序,改变原来的列表,返回None
1 | a = [1, 9, 3, 7,6] |
问题:当用户需要一个排好序的列表副本,同时保留原列表不变的做法
错误:1
2
3
4a = [1, 9, 3, 7,6]
b = a.sort()
print b
None
注意:b = a.sort()返回是None,后边不能再跟任何方法x.sort().reverse()是不对的
正确:
方法一:先把a的副本赋值给b,然后对b排序1
2
3
4
5
6
7a = [1, 9, 3, 7,6]
b = a[:]
b.sort()
a
[1, 9, 3, 7, 6]
b
[1, 3, 6, 7, 9]
注意:列表赋值b = a与b = a[:]的区别
b = a:a,b都指向同一个列表
方法二:sorted函数1
2
3
4
5
6a = [1, 9, 3, 7,6]
b = sorted(a)
a
[1, 9, 3, 7, 6]
b
[1, 3, 6, 7, 9]
注意:sorted函数可以用于任何序列,却总是返回一个列表1
2sorted('python')
['h', 'n', 'o', 'p', 't', 'y']
高级排序#
按照特定的方式进行排序,首先需要定义好规则函数,然后函数提供给sort作为参数1
2
3
4a = [1, 9, 3, 7,6]
a.sort(cmp)
a
[1, 3, 6, 7, 9]
sort有另外两个可选参数key和reverse
参数key与参数cmp类似:1
2
3
4
5#按照元素长度排序
a = ['yuinhfs','abc','b0','yunv','u','abcdf']
a.sort(key=len)
a
['u', 'b0', 'abc', 'yunv', 'abcdf', 'yuinhfs']
reverse参数1
2
3
4a = [1, 9, 3, 7,6]
a.sort(reverse=True)
a
[9, 7, 6, 3, 1]
元组#
元组为不可变序列
包括一个元素的元组:1
2
3
4
5
6
7
8
9#错误
24
24
#错误
(24)
24
#正确
(24,)
(24,)
tuple类型转化1
2
3
4tuple([1,2,3])
(1, 2, 3)
tuple('abc')
('a', 'b', 'c')