0
点赞
收藏
分享

微信扫一扫

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


文章目录

  • ​​list​​
  • ​​多层表达式​​
  • ​​列表生成式​​
  • ​​条件过滤​​
  • ​​pop​​
  • ​​insert​​
  • ​​append​​
  • ​​切片​​
  • ​​字符串切片​​
  • ​​倒序切片​​
  • ​​module​​
  • ​​动态导入模块​​
  • ​​使用\_\_future\_\_​​
  • ​​tuple​​
  • ​​创建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

​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,)


举报

相关推荐

0 条评论