【Python知识点】-列表list/模块module/元组tuple

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

poplist中删除元素。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,)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值