Python-组合数据类型2

简介: 今天要介绍的是Python的组合数据类型整理不易,希望得到大家的支持,欢迎各位读者评论点赞收藏感谢!



3、列表类型的操作


3.1 列表的操作函数


  • 列表类型继承序列类型特点,有一些通用的操作函数


ls = [1010, "1010", [1010, "1010"], 1010]
print(len(ls))
# 4 
lt =["Python", ["1010", 1010, [
1010, "
Python"]]]
print(len(lt))
# 2


  • min(ls)和max(ls)分别返回一个列表的最小或最大元素,使用这两个函数的前提是列表中各元素类型可以进行比较。


ls = [1010, 10.10, 0x1010]
print(min(ls))
# 10.1
lt = ["1010", "10.10", "Python"]
print(max(lt))
# 'Python'
ls = ls + lt
print(ls)
# [1010, 10.1, 4112, '1010', '10.10', 'Python']
print(min(ls))
'''
Traceback (most recent call last):
   File "<pyshell#15>", line 1, in <module>
      min(ls)
TypeError: '<' not supported between instances of 'str' and 'float''''


  • list(x)将变量x转变成列表类型,其中x可以是字符串类型,也可以是字典类型。


print(list("Python"))
# ['P', 'y', 't', 'h', 'o', 'n']
print(list({"小明", "小红", "小白", "小新"}))
# ['小红', '小明', '小新', '小白']
print(list({"201801":"小明", "201802":"小红", "201803":"小白"}))
# ['201801', '201802', '201803']


3.2 列表的操作方法


  • 列表类型存在一些操作方法,使用语法形式是:

<列表变量>.<方法名称>(<方法参数>)



  • ls.append(x)在列表ls最后增加一个元素x。


lt = ["1010", "10.10", "Python"]
lt.append(1010)
print(lt)
# ['1010', '10.10', 'Python', 1010]
lt.append([1010, 0x1010])
print(lt)
# ['1010', '10.10', 'Python', 1010, [1010, 4112]]


  • ls.append(x)仅用于在列表中增加一个元素,如果希望增加多个元素,可以使用加号,将两个列表合并。


lt = ["1010", "10.10", "Python"]
ls = [1010, [1010, 0x1010]]
ls += lt
print(lt)
['1010', '10.10', 'Python', 1010, [1010, 4112]]


  • ls.insert(i, x)在列表ls中序号i位置上增加元素x,序号i之后的元素序号依次增加。


lt = ["1010", "10.10", "Python"]
lt.insert(1, 1010)
print(lt)
# ['1010', 1010, '10.10', 'Python']


  • ls.clear()将列表ls的所有元素删除,清空列表。


lt = ["1010", "10.10", "Python"]
lt.clear()
print(lt)
# []


  • ls.pop(i)将返回列表ls中第i位元素,并将该元素从列表中删除。


lt = ["1010", "10.10", "Python"]
print(lt.pop(1))
# 10.10
print(lt)
# ["1010", "Python"]


  • ls.remove(x)将删除列表ls中第一个出现的x元素。


lt = ["1010", "10.10", "Python"]
lt.remove("10.10")
print(lt)
# ["1010", "Python"]


  • 除了上述方法,还可以使用Python保留字del对列表元素或片段进行删除,使用方法如下:


del <列表变量>[<索引序号>]   或
del <列表变量>[<索引起始>: <索引结束>]


lt = ["1010", "10.10", "Python"]
del lt[1]
print(lt)
# ["1010", "Python"]
lt = ["1010", "10.10", "Python"]
del lt[1:]
print(lt)
# ["1010"]


  • ls.reverse()将列表ls中元素进行逆序反转。


lt = ["1010", "10.10", "Python"]
print(lt.reverse())
# ['Python', '10.10', '1010']


  • ls.copy() 复制ls中所有元素生成一个新列表。


lt = ["1010", "10.10", "Python"]
ls = lt.copy()
lt.clear() # 清空lt
print(ls)
# ["1010", "10.10", "Python"]


  • 由上例看出,一个列表lt使用.copy()方法复制后赋值给变量ls,将lt元素清空不影响新生成的变量ls。
  • 需要注意,对于基本的数据类型,如整数或字符串,可以通过等号实现元素赋值。但对于列表类型,使用等号无法实现真正的赋值。其中,ls = lt语句并不是拷贝lt中元素给变量ls,而是新关联了一个引用,即ls和lt所指向的是同一套内容。


lt = ["1010", "10.10", "Python"]
ls = lt # 仅使用等号
lt.clear()
print(ls)
# []


  • 使用索引配合等号(=)可以对列表元素进行修改。


lt = ["1010", "10.10", "Python"]
lt[1] = 1010
print(lt)
# ["1010", 1010, "Python"]


  • 列表是一个十分灵活的数据结构,它具有处理任意长度、混合类型的能力,并提供了丰富的基础操作符和方法。当程序需要使用组合数据类型管理批量数据时,请尽量使用列表类型。



4、字典类型


4.1 字典的定义


  • “键值对”是组织数据的一种重要方式,广泛应用在Web系统中。键值对的基本思想是将“值”信息关联一个“键”信息,进而通过键信息查找对应值信息,这个过程叫映射。Python语言中通过字典类型实现映射。
  • Python语言中的字典使用大括号{}建立,每个元素是一个键值对,使用方式如下:


{<键1>:<值1>, <键2>:<值2>, … , <键n>:<值n>}
  • 其中,键和值通过冒号连接,不同键值对通过逗号隔开。字典类型也具有和集合类似的性质,即键值对之间没有顺序且不能重复。
  • 变量d可以看作是“学号”与“姓名”的映射关系。需要注意,字典各个元素并没有顺序之分。



d = {"201801":"小明", "201802":"小红", "201803":"小白"}
print(d)
# {'201801': '小明', '201802': '小红', '201803': '小白'}

4.2 字典的索引


  • 列表类型采用元素顺序的位置进行索引。由于字典元素“键值对”中键是值的索引,因此,可以直接利用键值对关系索引元素。
  • 字典中键值对的索引模式如下,采用中括号格式:


<值> = <字典变量>[<键>]


d = {"201801":"小明", "201802":"小红", "201803":"小白"}
print(d["201802"])
# 小红


  • 利用索引和赋值(=)配合,可以对字典中每个元素进行修改。


d["201802"] = '新小红'
print(d)
# {'201801': '小明', '201803': '小白', '201802': '新小红'}


  • 使用大括号可以创建字典。通过索引和赋值配合,可以向字典中增加元素。


t = {}
t["201804"] = "小新"
print(d)
# {'201804': '小新'}


  • 字典是存储可变数量键值对的数据结构,键和值可以是任意数据类型,通过键索引值,并可以通过键修改值。



5、字典类型的操作


5.1 字典的操作函数



  • 字典类型有一些通用的操作函数




  • len(d)给出字典d的元素个数,也称为长度。


d = {"201801":"小明", "201802":"小红", "201803":"小白"}
print(len(d))
# 3


  • min(d)和max(d)分别返回字典d中最小或最大索引值。


d = {"201801":"小明", "201802":"小红", "201803":"小白"}
print(min(d))
# '201801'
print(max(d))
# '201803'


  • dict()函数用于生成一个空字典,作用和{}一致。



d = dict()
print(d)
# {}


5.2 字典的操作方法


  • 字典类型存在一些操作方法,使用语法形式是:


<字典变量>.<方法名称>(<方法参数>)



  • d.keys()返回字典中的所有键信息,返回结果是Python的一种内部数据类型dict_keys,专用于表示字典的键。如果希望更好的使用返回结果,可以将其转换为列表类型。


d = {"201801":"小明", "201802":"小红", "201803":"小白"}
print(d.keys())
# dict_keys(['201801', '201802', '201803'])
print(type(d.keys()))
# <class 'dict_keys'>
print(list(d.keys()))
# ['201801', '201802', '201803']


  • d.values()返回字典中的所有值信息,返回结果是Python的一种内部数据类型dict_values。如果希望更好的使用返回结果,可以将其转换为列表类型。


d = {"201801":"小明", "201802":"小红", "201803":"小白"}
print(d.values())
# dict_values(['小明', '小红', '小白'])
print(type(d.values()))
# <class 'dict_values'>
print(list(d.values()))
# ['小明', '小红', '小白']


  • d.items()返回字典中的所有键值对信息,返回结果是Python的一种内部数据类型dict_items。


d = {"201801":"小明", "201802":"小红", "201803":"小白"}
print(d.items())
# dict_items([('201801', '小明'), ('201802', '小红'),('201803', '小白')])
print(type(d.items()))
# <class 'dict_items'>
print(list(d.items()))
# [('201801', '小明'), ('201802', '小红'), ('201803', '小白')]


  • d.get(key, default)根据键信息查找并返回值信息,如果key存在则返回相应值,否则返回默认值,第二个元素default可以省略,如果省略则默认值为空。


d = {"201801":"小明", "201802":"小红", "201803":"小白"}
print(d.get('201802'))
'小红'
print(d.get('201804'))
print(d.get('201804', '不存在'))
'不存在'


  • d.pop(key, default)根据键信息查找并取出值信息,如果key存在则返回相应值,否则返回默认值,第二个元素default可以省略,如果省略则默认值为空。相比d.get()方法,d.pop()在取出相应值后,将从字典中删除对应的键值对。


d = {"201801":"小明", "201802":"小红", "201803":"小白"}
print(d.pop('201802'))
# '小红'
print(d)
# {'201801': '小明', '201803': '小白'}
print(d.pop('201804', '不存在'))
# '不存在'


  • d.popitem()随机从字典中取出一个键值对,以元组(key,value)形式返回。取出后从字典中删除这个键值对。


d = {"201801":"小明", "201802":"小红", "201803":"小白"}
print(d.popitem())
# ('201803', '小白')
print(d)
# {'201801': '小明', '201802': '小红'}


  • d.clear()删除字典中所有键值对。


d = {"201801":"小明", "201802":"小红", "201803":"小白"}
d.clear()
print(d)
# {}


  • 此外,如果希望删除字典中某一个元素, 可以使用Python保留字del。


d = {"201801":"小明", "201802":"小红", "201803":"小白"}
del d["201801"]
print(d)
# {'201802': '小红', '201803': '小白'}


  • 字典类型也支持保留字in,用来判断一个键是否在字典中。如果在则返回True,否则返回False。
d = {"201801":"小明", "201802":"小红", "201803":"小白"}
print("201801" in d)
# True
print("201804" in d)
# False



  • 与其他组合类型一样,字典可以遍历循环对其元素进行遍历,基本语法结构如下:

for <变量名> in <字典名>
        <语句块>



  • for循环返回的变量名是字典的索引值。如果需要获得键对应的值,可以在语句块中通过get()方法获得。


d = {"201801":"小明", "201802":"小红", "201803":"小白"}
for k in d:
    print("字典的键和值分别是:{}和{}".format(k, d.get(k)))
'''
字典的键和值分别是:201801和小明
字典的键和值分别是:201802和小红
字典的键和值分别是:201803和小白'''


6、实例解析:文本词频统计


  • 在很多情况下,会遇到这样的问题:对于一篇给定文章,希望统计其中多次出现的词语,进而概要分析文章的内容。这个问题的解决可用于对网络信息进行自动检索和归档。

  • 在信息爆炸时代,这种归档或分类十分有必要。这就是“词频统计”问题。
  • 统计《哈姆雷特》英文词频

  • 第一步:分解并提取英文文章的单词
  • 通过txt.lower()函数将字母变成小写,排除原文大小写差异对词频统计的干扰。为统一分隔方式,可以将各种特殊字符和标点符号使用txt.replace()方法替换成空格,再提取单词。

  • 第二步:对每个单词进行计数


if word in counts:
else:
        counts[word] = 1

或者,这个处理逻辑可以更简洁的表示为如下代码:


counts[word] = counts.get(word,0) + 1


  • 第三步:对单词的统计值从高到低进行排序
    由于字典类型没有顺序,需要将其转换为有顺序的列表类型,再使用sort()方法和lambda函数配合实现根据单词次数对元素进行排序。


items = list(counts.items())#将字典转换为记录列表
items.sort(key=lambda x:x[1], reverse=True) #以第2列排序


# CalHamlet.py
def getText():
    txt = open("hamlet.txt", "r").read()
    txt = txt.lower()
    for ch in '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~':
        txt = txt.replace(ch, " ") #将文本中特殊字符替换为空格
    return txt
hamletTxt = getText()
words = hamletTxt.split()
counts = {}
for word in words:
    counts[word] = counts.get(word,0) + 1
items = list(counts.items())
items.sort(key=lambda x:x[1], reverse=True)
for i in range(10):
    word, count = items[i]
    print ("{0:<10}{1:>5}".format(word, count))


>>>
the 1138
and 965
to 754
of 669
you 550
a 542
i 542
my 514
hamlet 462
in 436


小结


主要针对初学程序设计的读者,具体讲解了程序设计语言的基本概念,理解程序开发的IPO编写方法,配置Python开发环境的具体步骤,以及Python语言和Python程序特点等内容,进一步给出了5个简单Python实例代码,帮助读者测试Python开发环境,对该语言有一个直观认识。


Python大戏即将上演,一起来追剧吧。

目录
相关文章
|
2月前
|
测试技术 索引 Python
Python接口自动化测试框架(练习篇)-- 数据类型及控制流程(一)
本文提供了Python接口自动化测试中的编程练习,包括计算器、猜数字、猜拳和九九乘法表等经典问题,涵盖了数据类型、运算、循环、条件控制等基础知识的综合应用。
33 1
|
2月前
|
数据处理 Python
【编程入门必读】Python数据类型大揭秘:掌握这些,让你的代码瞬间高大上!
【8月更文挑战第22天】Python提供多样数据结构支持编程需求。基本数据类型如数值(整型、浮点型、复数)、布尔型、字符串;复合数据类型含列表(有序、可变)、元组(有序、不可变)、字典(键值对)、集合(无序、唯一元素)。还有特殊类型如`NoneType`和`range`。Python内置数据类型转换如`int()`, `float()`, `str()`等方便使用。掌握这些类型有助于编写高效Python代码。
26 0
|
3天前
|
Python
[oeasy]python036_数据类型有什么用_type_类型_int_str_查看帮助
本文回顾了Python中`ord()`和`chr()`函数的使用方法,强调了这两个函数互为逆运算:`ord()`通过字符找到对应的序号,`chr()`则通过序号找到对应的字符。文章详细解释了函数参数类型的重要性,即`ord()`需要字符串类型参数,而`chr()`需要整数类型参数。若参数类型错误,则会引发`TypeError`。此外,还介绍了如何使用`type()`函数查询参数类型,并通过示例展示了如何正确使用`ord()`和`chr()`进行转换。最后,强调了在函数调用时正确传递参数类型的重要性。
10 3
|
11天前
|
存储 Java C++
30天拿下Python之数据类型
30天拿下Python之数据类型
21 4
|
1月前
|
存储 数据挖掘 程序员
揭秘Python:掌握这些基本语法和数据类型,你将拥有编程世界的钥匙!
【9月更文挑战第3天】Python 是一种简洁强大的高级编程语言,其清晰的语法和丰富的功能深受程序员喜爱。本文从基本语法入手,介绍 Python 的代码结构特点,如通过缩进区分代码块,使逻辑更清晰。接着详细讲解主要数据类型:数值型、字符串、列表、元组、集合与字典,每个类型均附有示例代码,帮助初学者快速掌握 Python,为后续学习打下坚实基础。
32 2
|
2月前
|
索引 Python
Python 中常见的内置数据类型
【8月更文挑战第29天】
24 3
|
2月前
|
存储 测试技术 数据格式
Python接口自动化测试框架(练习篇)-- 数据类型及控制流程(二)
本文通过数据类型转换和文件读取的练习,复习了Python中的数据类型、循环、条件判断、内置函数等基础知识,并演示了如何将字符串数据转换为字典列表,以及如何从文本文件中读取和转换数据。
33 1
|
2月前
|
测试技术 Python 容器
Python接口自动化测试框架(基础篇)-- 常用数据类型dict
这篇文章详细介绍了Python中字典(dict)数据类型的使用,包括字典的创建、取值、增删改操作以及内置函数的应用,并探讨了字典的扩展特性,如键的唯一性和不可变性。
16 0
Python接口自动化测试框架(基础篇)-- 常用数据类型dict
|
2月前
|
测试技术 Python
Python接口自动化测试框架(基础篇)-- 常用数据类型Number
这篇文章是关于Python接口自动化测试中常用数据类型Number的基础介绍,涵盖了int、float、bool类型以及数学函数和常量的使用,强调了这些数据类型在自动化测试框架中的广泛应用。
15 0
Python接口自动化测试框架(基础篇)-- 常用数据类型Number
|
2月前
|
存储 数据采集 人工智能
一:《Python基础语法汇总》— 变量与数据类型
【8月更文挑战第15天】本篇文章详细讲述了关于变量的命名规范,id()函数及Python的数据类型与强制转换
24 2