在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 | 比较两个列表中的元素 |
| 2 | 计算列表的长度 |
| 3 | 从列表项中返回最大值 |
| 4 | 从列表项中返回最小值 |
| 5 | 转换一个元组为列表 |
练习:
t=["Tom", 47, "physics deparment", "Guangdong"]
print(len(t))
age=[45, 88, 56, 12, 33]
print(max(age))
Python包括以下列表的方法
| SN | 方法与描述 |
|---|---|
| 1 | 添加 obj 对象到列表 |
| 2 | 返回obj对象在列表中出现的次数 |
| 3 | 添加seq的内容到列表中 |
| 4 | 返回列表中 obj 对象对应最低索引值 |
| 5 | 插入 obj 对象到列表的 index 索引位置 |
| 6 | 移除并返回列表中最后一个对象或 obj 对象 |
| 7 | 从列表中移除 obj 对象 |
| 8 | 倒转列表对象位置 |
| 9 | 排序列表的对象,如果给定请使用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))


评论 0