python容器特点及概念

最近使用了一个数据格式交换技术JSON,发现他的格式完全是按照python容器的格式,可以说JSON就是python,为此复习python容器的格式及其访问;

目录

python容器的种类:

字符串

字符串格式化

字符串不可变

字符串中的元素访问

字符串切片

列表[ ] 

元组( )

集合{ }

字典{ }


python容器的种类:

        python中常用的容器主要划分为两种:序列(即有序的列表,如:列表、元祖等)和映射(如:字典)。序列中,每个元素都有下标,它们是有序的。映射中,每个元素都有名称(又称“ 键 ”),它是无序的。
除了序列和映射之外,还有一种需要注意的容器——“ 集合 ”。

        python容器有五种(我认为字符串也是一种容器、当然你也可以认为只有四种、无伤大雅)

字符串、列表[ ]、元组( )、集合{ }、字典{ } ; 

字符串

字符串格式化

        说到字符串就不得不提一下python字符串的快速格式化的语法了(因为他有点像在前端web界面使用el表达式,从与域中取数据的语法格式 ):

num = 12
print(f"数字 :{num}")

当然你也可以像C语言一样,使用占位符呢样,只不过略有区别:

python:

num = 111
num3 = 129.1234
str1 = "字符串1"

print("字符串: %s,整数字:%d,浮点数:%7.2f" % (str1, num, num3))

C语言:

#include <stdio.h>
int main()
{
	int a = 10, b = 20;
	int len = printf("a = %d, b = %d\n", a, b);
	printf("len = %d\n", len);
}

字符串不可变

        在Python中字符串是不可变的,不可变是指不可以通过索引修改字符串中的某个元素,如果你学过java你就会知道java中的字符串也是不可变的,这里的不可变不是不可修改,就比如下面这串代码python是允许的;

str1 = "qqq"
str1 = "wwww"
print(str1)  //wwww

        字符串的不可变性指的是,字符串一旦被创建就不能被修改。这意味着,如果需要更改字符串中的字符或添加新字符,则需要创建一个新字符串对象(不理解也没关系,可以看下面代码)。

my_string = "hello"
my_string[0] = "H"
print(my_string)  // 'str' object does not support item assignment

        在这个例子中,我们尝试将字符串 my_string 的第一个字符从小写字母 "h" 改为大写字母 "H"。但是,当我们运行该代码时,会抛出一个异常 'str' object does not support item assignment:

        这是因为 Python 字符串是不可变的,不能通过索引方式来修改其元素。如果要更改字符串中的字符,则需要创建一个新字符串对象,并将其赋值给原始字符串变量。

字符串中的元素访问

        python中的字符串和java中的字符串都可以通过下标去获取指定位置的元素,这个特性保证了字符串的切片,也就是字符串切割,Java中是用的subString()方法,在python中用的是切片;

name = "zhangsan"
print(name[0])//输出z

字符串切片

字符串格式:

Python 中字符串切片的格式为:[start:stop:step]

其中,start 表示起始位置(包括该位置),stop 表示终止位置(不包括该位置),step 表示步长。

例如,想要获取字符串 hello world 的前三个字符,可以使用如下代码:

my_string = "hello world"
result = my_string[0:3]
print(result)   # 输出 "hel"

        在这个例子中,我们使用了字符串切片的形式 [0:3] 来获取字符串的前三个字符。由于切片操作是左闭右开的区间,因此这个操作会获取字符串的第一个、第二个和第三个字符,并返回一个新的字符串 hel

        另外,还可以使用负数来表示从字符串末尾开始计算的索引值,也就是字符串也支持倒叙。例如,如果要获取字符串的最后四个字符,可以使用如下代码:

my_string = "hello world"
result = my_string[-4:]
print(result)   # 输出 "orld"

        在这个例子中,我们使用了字符串切片的形式 [-4:] 来获取字符串的最后四个字符。由于不能指定终止位置时默认取到字符串末尾,所以这个操作会获取字符串的倒数第四个、倒数第三个、倒数第二个和倒数第一个字符,并返回一个新的字符串 orld


列表[ ]

Python 中的列表是一种有序容器,它允许存储任意数量和类型的元素,并且可以动态调整其大小。以下是 Python 列表的主要特点:

  1. 可变性:列表中的元素可以进行修改、添加、删除等操作,因此是一种可变容器,这点和字符串的不可变性比较记忆。

  2. 有序性:列表中的元素按照插入顺序排列,因此可以通过下标来访问和操作列表中的元素。

  3. 灵活性:列表可以存储任意数量和类型的元素,包括数字、字符串、布尔值、函数等数据类型。

  4. 支持切片:使用切片操作可以从列表中获取一个子列表,或者对列表进行分割、合并等操作,格式和字符串切片格式一模一样。

  5. 方法多样性:列表支持多种常见的操作,例如排序、查找、遍历等。

  6. 可迭代性:列表是一种可迭代对象,可以使用 for 循环来遍历其中的元素。

语法格式: 

list1 = [ 123 , "456" ,  [123,"456"] ,True]

特征:中括号包裹,逗号隔开元素,元素类型任意,可以嵌套,可以用 index 进行读写

        基于列表的以上特点,我们就可以对列表中的每个元素进行增删改查。可以按照index删除元素(pop),也可以按照值删除元素(remove),可以插入元素到某个位置(insert),也可以追加元素到列表尾部(append)。


元组( )

在 Python 中,元组(Tuple)是一种有序容器,用于存储多个值。元组和列表类似,你可以认为元组就是一种特殊的列表,但具有以下特点:

  1. 不可变性:元组中的元素不允许修改、添加或删除。这意味着一旦创建了元组,就无法对其进行更改。

  2. 有序性:元组中的元素按照插入顺序排列。因此,可以使用索引来访问特定位置的元素。

  3. 可以包含任意类型的数据:元组中可以包含数字、字符串、布尔值、函数等数据类型。

  4. 具有不可变性的子元素:如果元组中的某个元素本身也是不可变的(例如另一个元组或字符串),则该元素也不能被修改。

  5. 可以用作字典键:由于元组是不可变的,因此可以安全地用作字典的键。相比之下,列表不能用作字典的键,因为它们是可变的。

语法格式:

语法:(123,456,789)

特征:小括号包裹,逗号隔开元素,元素类型必须统一,可以嵌套但是满足类型统一,可以用 index 进行读,但不可写,更不可增删。

        元组的所有操作都类似List,唯一的不同就是只能 查,不能增(没有append和insert)删(没有remove和pop)改(不能对元素赋值)。可以认为 Tuple 是一个 元素类型必须统一且不可修改 的 List,只能读里面的内容。

元组不可变

解释一下元组的元素类型必须统一这句话,实际上我们在定义元组时是可以存储不同类型的数据的,只不过不会这样使用,因为python设计元组的初衷就是,定义一种特殊的列表,有序且拥有列表的大部分功能并且不可变;这里的不可变同样指不可通过索引来修改其中的元素

tup1 = (12, "ser", 23, True)

print(type(tup1[0]))

# tup1[1] += 23   TypeError: can only concatenate str (not "int") to str

num = tup1[0] + 23
print(num)

# tup1[0] = 12   TypeError: 'tuple' object does not support item assignment


集合{ }

在 Python 中,集合(Set)是一种无序的容器,用于存储唯一的元素,也就是说你存值之前他会先做一次判断如果没有存入,如果有直接跳过,这个有点像java的set集合。以下是 Python 集合的主要特点:

  1. 无序性:集合中的元素没有固定顺序,因此不能像列表或元组那样通过索引来访问它们。

  2. 唯一性:集合中的元素必须是唯一的,重复的元素会被合并为一个。这意味着集合可以用于去除重复的元素。

  3. 可变性:集合是一种可变容器,可以添加、删除或修改其中的元素。

  4. 不支持索引:由于集合是无序的,因此不能像其他序列类型那样使用索引来访问其元素。

  5. 支持多种操作:集合支持多种常见操作,例如并集、交集、差集等,可以使用这些操作来对集合进行处理和操作。

  6. 可迭代性:集合是一种可迭代对象,可以使用 for 循环来遍历其中的元素。

总之,Python 集合是一种简单而有用的数据结构,通常用于存储独一无二的元素,并且能够方便地进行各种操作。集合的唯一性质使其成为一种很好的设计选择,并且它们通常可以与其他 Python 对象(例如列表、字典等)一起使用,以便以最佳方式解决问题。

语法格式:

语法:{ 123,"qqq",456}

特征:大括号包裹,逗号隔开元素,元素类型任意,可以嵌套;

set集合是不支持索引访问的,如下列代码会报错:

set1 = {123, "www", 23}
print(set1[2])  //TypeError: 'set' object is not subscriptable


字典{ }

在 Python 中,字典(Dictionary)是一种无序的容器,用于存储键值对,字典有点像java中的map集合。以下是 Python 字典的主要特点:

  1. 键值对:字典中的元素由键(Key)和值(Value)组成,每个键对应一个值。可以使用键来获取对应的值。

  2. 可变性:字典是一种可变容器,可以添加、删除或修改其中的元素。

  3. 唯一性:字典中的键必须是唯一的,如果试图使用重复的键添加元素,则会覆盖原有的值。

  4. 不支持索引:由于字典是无序的,因此不能像其他序列类型那样使用索引来访问其元素。

  5. 支持多种操作:字典支持多种常见操作,例如获取所有键、获取所有值、检查是否包含某个键等,可以使用这些操作来对字典进行处理和操作。

  6. 可迭代性:字典是一种可迭代对象,可以使用 for 循环遍历其中的键或值。

语法格式:

语法:{
        "name" :"zhangsan",

        "age":22,

        "gender" : "nan"

}

特征:大括号包裹,逗号隔开元素,元素构成必须统一格式(由分号分隔的两部分,前半部分必须是字符串,后半部分任意),key一定是字符串,如果发现某个元素没包含冒号,则会被当做Set处理,又因为有些元素包含分号,而Set允许元素中出现冒号(字符串中的不算),所以此时会报错。

猜你喜欢

转载自blog.csdn.net/m0_64231944/article/details/130794949