list
list是一种有序的集合,可以随时添加和删除其中的元素,是按照顺序排列的。构成list非常简单,直接用[]把所有的元素括起来,就是一个list对象。list中包含的元素并不要求都必须是同一种数据类型,下面的代码是一个例子:
l = [1, 'A', '-']
print(l)
输出如下:
[1, 'A', '-']
用 -1 这个索引来表示最后一个元素,下面的代码是一个例子:
l[-1]
多层表达式
for循环可以嵌套,因此,在列表生成式中,也可以用多层 for 循环来生成列表。
对于字符串 ‘ABC’ 和 ‘123’,可以使用两层循环,生成全排列:
[m + n for m in 'ABC' for n in '123']
输出:
['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']
相当于:
l = []
for m in 'ABC':
for n in '123':
l.append(m + n)
print(l)
与之前的输出结果相同。
列表生成式
输入如下:
[x * x for x in range(1, 11)]
输出如下:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
写列表生成式时,把要生成的元素 x * x
放到前面,后面跟 for 循环,就可以把list创建出来。
条件过滤
列表生成式的 for 循环后面还可以加上 if 判断。例如:
# 只想要偶数的平方,不动range的情况下,可以加上if筛选
[x * x for x in range(1, 11) if x % 2 == 0]
# 有了if条件,只有if判断为true的时候,才会把循环的当前元素添加到列表中
pop
pop
从list
中删除元素。pop()方法总是删掉list的最后一个元素,并且它还返回这个元素,下面的代码是一个例子:
l = ['A', 'B', 'C']
l.pop()
输出如下:
'C'
此时,l
的内容为['A', 'B']
还将指定元素删除,必须指定索引值,下面的代码是一个例子,l
删除B
,索引值为1
,所以l.pop(1)
:
l = ['A', 'B', 'C']
l.pop(1)
insert
添加新元素,接受两个参数,第一个参数是索引号,第二个参数是待添加的新元素,可将指定元素插到固定位置,下面的代码是一个例子:
l = ['A', 'B', 'C']
l.insert(1, 'D')
l
输出如下:
['A', 'D', 'B', 'C']
append
只能将元素添加到列表最后,且只能接受一个参数,只能添加一个元素,下面的代码是一个例子:
l = ['A', 'B', 'C']
l.append('D')
l
输出如下:
['A', 'B', 'C', 'D']
切片
字符串切片
字符串也可以用切片操作,只是操作结果仍是字符串,下面的代码是一个例子:
'Hello World'[6 :]
输出如下:
'World'
倒序切片
对于list,既然Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片,倒数第一个元素的索引是-1。倒序切片包含起始索引,不包含结束索引试试:
l = ['A', 'B', 'C', 'D']
l[-3 : -1]
输入如下:
['B', 'C']
module
安装模块
pip install <模块名>
动态导入模块
Python是动态语言,解释执行,因此Python代码运行速度慢。如果要提高Python代码的运行速度,最简单的方法是把某些关键函数用 C 语言重写,这样就能大大提高执行速度。
比如,同样的功能,StringIO
是纯Python
代码编写的,而 cStringIO
部分函数是 C
写的,因此 cStringIO
运行速度更快。下面的代码是一个例子,在Python中动态导入模块:
try:
from cStringIO import StringIO
except ImportError:
from StringIO import StringIO
上述代码先尝试从cStringIO导入,如果失败了(比如cStringIO没有被安装),再尝试从StringIO导入。这样,如果cStringIO模块存在,则我们将获得更快的运行速度,如果cStringIO不存在,则顶多代码运行速度会变慢,但不会影响代码的正常执行。
try 的作用是捕获错误,并在捕获到指定错误时执行 except 语句。
使用__future__
要“试用”某一新的特性,就可以通过导入__future__模块的某些功能来实现。
“/”除将得到浮点数,“//”除才仍是整数。
tuple
tuple是另一种有序的列表,一旦创建完毕,就不能修改了。创建tuple和创建list唯一不同之处是用( )替代了[ ]。tuple没有 append()方法,也没有insert()和pop()方法。获取 tuple 元素的方式和 list 是一模一样的,我们可以正常使用 t[0],t[-1]等索引方式访问元素,但是不能赋值成别的元素。
创建tuple元组
tuple和list一样,可以包含 0 个、1个和任意多个元素。包含0 个元素的 tuple,也就是空tuple,直接用 ()表示:
t = ()
注意:输入如下:
t = (1)
print(t)
输出如下:
1
为什么呢?
因为()
既可以表示tuple
,又可以作为括号表示运算时的优先级,结果 t = (1)
被Python
解释器计算出结果 1
,导致我们得到的不是tuple
,而是整数 1
。正是因为用()定义单元素的tuple
有歧义,所以 Python
规定,单元素 tuple
要多加一个逗号,
,这样就避免了歧义:
t = (1, )
print(t)
输出如下:
(1,)