1
点赞
0
评论
0
转载

Lesson 5 --Python3 列表List & 元组tuple

在Python中的最基本数据结构是序列。序列中的每个元素被分配一个号码 - 它的位置或索引。第一个索引是0,第二个索引是1,...依此类推。

Python中有六种内置类型的序列,但最常见的是列表和元组,我们将在本教程中看到。

有一些事情,可以使用序列类型来做。这些操作包括索引,切片,加,乘,和检查成员运算。此外,Python已经有内置函数来查找序列的长度和查找其最大和最小的元素。

Python列表

列表在Python提供一个最通用的数据类型,它可以写成逗号分隔值地方括号(项目)的列表。列表重要的一点是,在列表中的项目不必是同一类型。

创建一个列表是在方括号中以逗号分隔放置不同值。例如 -

list1 = ['physics', 'chemistry', 1997, 2000]; list2 = [1, 2, 3, 4, 5 ]; list3 = ["a", "b", "c", "d"];

与字符串索引类似,列表的索引从0开始,并列出可切片,联接,等等。

访问列表中的值

要访问列表值,请使用方括号连同索引或索引切片获得索引对应可用的值。例如 -

#!/usr/bin/python3 list1 = ['physics', 'chemistry', 1997, 2000] list2 = [1, 2, 3, 4, 5, 6, 7 ] print ("list1[0]: ", list1[0]) print ("list2[1:5]: ", list2[1:5])

当执行上面的代码,它产生以下结果 -

list1[0]:  physics list2[1:5]:  [2, 3, 4, 5]

练习: 

teacher=["Tom",  47, "physics deparment", "Guangdong"]

print(teacher)
print(teacher[2])


更新列表

可以通过给赋值运算符到左侧切片更新列表中的单个或多个元素, 并且可以使用 append()方法中加入一元素。例如 -

#!/usr/bin/python3 list = ['physics', 'chemistry', 1997, 2000] print ("Value available at index 2 : ", list[2]) list[2] = 2001 print ("New value available at index 2 : ", list[2]) teacher[1]=37 print(teacher)

注:append()方法将在后续部分讨论。

当执行上面的代码,它产生以下结果 -

Value available at index 2 : 1997 New value available at index 2 : 2001

删除列表元素

要删除列表元素,如果你知道要删除哪些元素那么可以使用del语句,或者如果你不知道,那么 remove()方法。例如 -

#!/usr/bin/python3 list = ['physics', 'chemistry', 1997, 2000] print (list) del list[2] print ("After deleting value at index 2 : ", list)

当执行上面的代码,它产生以下结果 -

['physics', 'chemistry', 1997, 2000] After deleting value at index 2 :  ['physics', 'chemistry', 2000]

注意: remove() 方法将在后续部分讨论。


练习:更新与删除


teacher=["Tom",  47, "physics deparment", "Guangdong"]

teacher[1]=37

print(teacher)

del teacher[2]

print(teacher)


基本列表操作

列表的 + 和 * 运算符就像字符串中一样; 它们在这里的意思是串联和重复,接受这个结果是一个新的列表,而不是一个字符串。

事实上,列表响应所有和我们在先前章节中的字符串使用的顺序操作一样。

Python表达式结果描述
len([1, 2, 3])3长度
[1, 2, 3] + [4, 5, 6][1, 2, 3, 4, 5, 6]

串接

['Hi!'] * 4['Hi!', 'Hi!', 'Hi!', 'Hi!']

重复

3 in [1, 2, 3]True成员运算
for x in [1,2,3] : print (x,end=' ')1 2 3迭代

索引,切片和矩阵

因为列表是序列,索引和切片,以所它与字符串操作的工作方式相同。

假设以下的输入 -

L=['C++'', 'Java', 'Python']

 

Python表达式结果描述
L[2]'Python'

偏移位从零开始

L[-2]'Java'

负值:从右边计数

L[1:]['Java', 'Python']

取切片部分

练习:

t=["Tom",  47, "physics deparment", "Guangdong"]

print(t[1:3])

print(t[-2])

print(t[2:])


内置列表函数与方法:

Python包括以下列表函数 -

SN

函数与描述

1

cmp(list1, list2)

比较两个列表中的元素

2

len(list)

计算列表的长度

3

max(list)

从列表项中返回最大值

4

min(list)

从列表项中返回最小值
5

list(seq)


转换一个元组为列表


练习:

t=["Tom",  47, "physics deparment", "Guangdong"]

print(len(t))

age=[45, 88, 56, 12, 33]

print(max(age))


Python包括以下列表的方法

SN

方法与描述

1

list.append(obj)

添加 obj 对象到列表

2

list.count(obj)

返回obj对象在列表中出现的次数

3

list.extend(seq)

添加seq的内容到列表中

4

list.index(obj)

返回列表中 obj 对象对应最低索引值

5

list.insert(index, obj)

插入 obj 对象到列表的 index 索引位置

6

list.pop(obj=list[-1])

移除并返回列表中最后一个对象或 obj 对象
7

list.remove(obj)

从列表中移除 obj 对象

8

list.reverse()

倒转列表对象位置

9

list.sort([func])

排序列表的对象,如果给定请使用func比较


练习1:

list1 = ['physics', 'Biology', 'chemistry', 'maths'] list1.sort() print ("list now : ", list1)


练习2:

list1 = ['C++', 'Java', 'Python'] list1.append('C#') print ("updated list : ", list1)


练习3:

list1 = ['physics', 'Biology', 'chemistry', 'maths'] list1.remove('Biology') print ("list now : ", list1) list1.remove('maths') print ("list now : ", list1)list1.pop() print ("list now : ", list1)


nltk练习,词的统计:

import nltk

book_list=nltk.corpus.gutenberg.fileids()  #gutenberg语料库的目录

emma = nltk.corpus.gutenberg.raw('austen-emma.txt') #获得'austen-emma.txt'的文本

words=emma.split()  #分词。


#也可以直接通过words=nltk.corpus.gutenberg.words('austen-emma.txt') 获得分词


word_count=words.count("emma")  #统计"emma"出现几次.^O^


练习:

在gutenberg语料库中有圣经"bible-kjv.txt",请统计一下耶酥(Jesus)和God出现的次数。







\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\元组\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Python3元组tuple

'''
元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号。
'''
'''
uple元素不可变有一种特殊情况,当元素是可变对象时。
对象内部属性是可以修改的!tuple的不可变限制只是在一个纬度上:元素的类型。
实现理解,tuple的元素所保存的内容(数值或内存地址)是不允许修改的,但地址映射的对象自身是可以修改的。
'''
a = (1,[3,2])
a[1][0] = 1
print (a)
a[1].append(3)
print (a)
del a[1][2]
print (a)
#del a[1]
'''
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object doesn't support item deletion
'''
del a[1][1]
del a[1][0]
print (a)

'''
串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。
tuple和list非常类似,但是tuple一旦初始化就不能修改
因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。tuple的陷阱:
当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来
'''

#元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组
tup = ('Google', 'Runoob', 1997, 2000)
print (tup)
#del tup
print ("删除后的元组 tup : ")
print (tup)
'''
NameError: name 'tup' is not defined
'''

#元组中的元素值是不允许修改的,但我们可以对元组进行连接组合
tup1 = (12, 34.56);
tup2 = ('abc', 'xyz')
tup3 = tup1 + tup2
print(tup3)

#元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用
tup1 = (50)
print(type(tup1))
tup1 = (50,)
print(type(tup1))



广东外语外贸大学 信息科学与技术学院
SCHOLAT.com 学者网
免责声明 | 关于我们 | 联系我们
联系我们:
返回顶部