Python学习笔记——变量与内置数据结构(一切皆对象、in操作符、列表、字典、元组、集合)

Python中一切皆对象,包括函数。数据结构如列表、字典、元组和集合可存储任意对象,且具有独特性质。列表是可变的有序集合,元组是不可变的有序集合,字典是无序的键值对集合,集合是无序的唯一对象集合。这些数据结构支持in操作、动态扩展和不同类型的元素。Python是面向对象的语言,但不强制使用类,允许直接编写代码。面向对象编程在Python中是可选的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一切皆对象

Python中,一切都是对象;(包括函数)

这意味着内置数据结构(列表、字典、元组、集合)本身也能存储其他内置数据结构
我们在各个内置数据结构中存储的都是对象:“简单”的字符串是对象,“复杂”的字典也是对象

  • 因此,可以有字典的字典、列表的列表、集合的元组、字典的集合…
    例如,如果有一个形如表格的数据结构,可以创建字典的字典,每个内层字典用来表示表格中的一行数据,从而可以方便的管理这些数据
    而如果表格只是一次性使用(直接输出),可以创建列表的列表并进行遍历
  • 另外,可以使用pprint(pretty print)模块来美观地打印复杂数据结构
    例如,打印字典的字典d,可以写
    import pprint
    pprint.pprint(d)

所有对象都有一个唯一的对象标识符,可通过id()BIF来查看

所有对象都可以赋给变量(变量动态赋值:声明时无需指定类型)

对 Python程序员来说,“Don’ t panIc!”是一个字符串对象,42则是一个数字对象
与其他编程语言中一样,对象可以有状态(属性或值)和行为(方法)

与对象有关的函数和操作符

检查一个对象是否在另一个对象中,使用in操作符(或用not in

>>> if 1 in [0,1,2]:
	print("true")

	
true

len内置函数返回对象的大小

>>> len([0,1,2])
3

Pyhton是面向对象的编程语言?

虽然可以采用一种面向对象的方式使用类、对象、实例等编写Python程序
不过,不一定非得这么做。与其他一些编程语言不同(特别是Java),一些简单的程序不需要从类开始:可以直接写你需要的代码,程序也能很好地工作。

要强调的是, Python中的一切都表现得像是来自某个类的对象。
从这个方面来说,可以认为 Python更基于对象而不纯粹是面向对象,在 Python中面向对象编程是可选的

认识4个内置数据结构

在变量中存储单个数据值无需太多工作,下面来看 Python为存储值集合提供的内置支持:
Python提供了4个内置数据结构,可以用来保存任何对象集合,它们分别是列表、元组、字典和集合。

  1. 列表:有序的可变对象集合

程序员说听到“列表”, 首先跃入脑海的可能都是“链表”;然而,Python的列表更类似你印象中的数组,而不是链表

将python列表视作一种“高层集合”,列表并不关心其储存的列表项的数据类型,而只是提供一种机制,能够以列表的形式存储数据

  • 列表是有序的,列表就像一个数组——它存储的对象按顺序放置在槽中
  • (与数组不同) Python中的列表是动态的,因为它们可以根据需要扩展(和收缩),使用列表前不需要预声明列表的大小。
  • 列表是异构的(而非同构),因为不需要预声明所要存储的对象的类型,同一列表中可以混合存储不同类型的对象,甚至可以在列表中存储另一个列表
  • 列表是可变的,可以在任何时间通过增加、删除或修改对象来修改列表。
  1. 元组:有序的不可变对象集合
    元组是“不可变”的列表
  2. 字典:无序的键/值对集合
    字典相当于我们所说的关联数组、映射map(C++和Java中)、符号表或散列(Perl和Ruby中)。
    可以把 Python的字典想成一个两列多行的数据结构。
  • 字典中每个唯一键有一个与之关联的值,与键关联的值可以是任意对象
  • 字典是无序的,增加键/值对时可能有一个顺序,但字典不会保持这个顺序,(对Python来说)这个顺序没有任何意义
  • (类似于列表)字典是可变的,可以根据需要动态扩展(和收缩)
  1. 集合:无序的唯一对象(避免重复)集合
  • 集合中不允许有重复的对象
  • 集合允许完成并集、交集和差集操作
  • 类似列表和字典,集合是动态的,可以根据需要扩展(和收缩)。
  • 类似字典,集合是无序的,所以不能对集合中对象的顺序做任何假设。
  • 集合能实现非常快速的查找。如果主要操作是查找,集合往往是首选的数据结构,使用集合就比列表的顺序搜索要快得多。

Python解释器将“空列表”表示为[];将“空字典”表示为{};将“空集合”表示为set();将“空元组”表示为()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值