python数据结构(列表,元组,字符串,字典,集合)


python中有6个标准的数据结构,可以分成基本数据结构和容器数据结构。基本数据结构是Number(数字),支持int,float,bool等;容器数据结构就是本文要讲的,包括List,Tuple,String,Dictionary,Set(也称序列类型)。其中Number,String,Tuple为不可变数据类型,List,Dictionary,Set是可变数据类型。

列表(list)

列表是用方括号标注,逗号分隔的一组值。列表是有序集合,没有固定大小,可以包含不同类型的元素,但一般情况下,各个元素的类型相同。
语法:[element1,element2, ⋯ \cdots ]

1.列表的创建

1.1创建一个普通列表

x=["apple","orange","grape","banana","cherry"]
y=[23,45,-12,345,-78]
z=list(range(1,10,3)) # 利用range()函数,1-10,3为间隔,左闭右开
print(x,type(x))
print(y,type(y))
print(z,type(z))

[‘apple’, ‘orange’, ‘grape’, ‘banana’, ‘cherry’] <class ‘list’>
[23, 45, -12, 345, -78] <class ‘list’>
[1, 4, 7]

1.2 利用推导式创建列表(List comprehensions)

x=[i for i in range(10,1,-2)]
print(x)

y=[j for j in range(50) if (j % 2) != 0 and (j % 3) == 0]
print(y)

z=[(x, y) for x in [1,2,3] for y in [3,1] if x != y]
print(z,type(z))

[10, 8, 6, 4, 2]
[3, 9, 15, 21, 27, 33, 39, 45]
[(1, 3), (2, 3), (2, 1), (3, 1)] <class ‘list’>

3.增(向列表中添加元素)

list.append(obj):在列表末尾添加新的对象
list.extend(seq) :通过添加可迭代对象中的所有项来扩展列表
list.insert(index, obj): 在编号 index 位置插入 obj

fruit=["apple","orange","grape"]

x=fruit.append(["banana","cherry"]) # 追加,把一个东西整体添加在列表后
print(x,type(x),len(x))

y=fruit.extend(["banana","cherry"]) # 扩展,把一个东西里的所有元素添加在列表后。
print(y,type(y),len(y))

z=fruit.insert(2,"cherry")
print(z)

[‘apple’, ‘orange’, ‘grape’, [‘banana’, ‘cherry’]] <class ‘list’> 4
[‘apple’, ‘orange’, ‘grape’, ‘banana’, ‘cherry’] <class ‘list’> 5
[‘apple’, ‘orange’, ‘cherry’, ‘grape’]

4.删(删除列表中的元素)

list.remove(obj): 移除列表中某个值的第一个匹配项
del var1[, var2 ……] 删除单个或多个对象。

x=["apple","orange","grape","banana","cherry"]
x.remove("orange")
print(x)

[‘apple’, ‘grape’, ‘banana’, ‘cherry’]

x=["apple","orange","grape","banana","cherry"]
del x[0:2]
print(x)

[‘banana’, ‘cherry’]

5.查(获取列表中的元素)

5.1 通过索引获取
列表从左到右第一个元素索引是0,如果是从右到左最后一个元素索引是-1

x=["apple","orange","grape","banana",["cherry","pear"]]
print(x[0],type(x[0]))
print(x[-1],type(x[-1]))

apple <class ‘str’>
[‘cherry’, ‘pear’] <class ‘list’>

5.2 通过切片:
切片是列表和字符串最常用的获取元素的方法,语法是:

start : stop : step

其中又可以分以下几种情况

切片含义
start :以 step 为 1 (默认) 从编号 start 往列表尾部切片。
: stop以 step 为 1 (默认) 从列表头部往编号 stop 切片
start : stop以 step 为 1 (默认) 从编号 start 往编号 stop 切片
start : stop : step以具体的 step 从编号 start 往编号 stop 切片
:复制列表中的所有元素(浅拷贝)
x=["apple","orange","grape","banana","cherry","pear"]
print(x[2:])  # ['grape', 'banana', 'cherry', 'pear']
print(x[-2:]) # ['cherry', 'pear']
print(x[:-3]) # ['apple', 'orange', 'grape']
print(x[:2])  # ['apple', 'orange']
print(x[0:4:2]) # ['apple', 'grape']
print(x[::-1])  # ['pear', 'cherry', 'banana', 'grape', 'orange', 'apple']
print(x[:3:2]) # ['apple', 'grape']
print(x[1::2]) # ['orange', 'banana', 'pear']

6.常用操作符

等号:==
连接:+
重复:*
成员关系:in , not in

list1 = [123, 456]
list2 = [456, 123]
list3 = [123, 456]

print(list1 == list2)  # False
print(list1 == list3)  # True

list4 = list1 + list2  # extend()
print(list4)  # [123, 456, 456, 123]

list3 *= 3
print(list3)  # [123, 456, 123, 456, 123, 456]

print(123 in list3)  # True
print(456 not in list3)  # False

字符串(string)

1.定义和创建

引号之间的字符集合,支持成对的单引号或双引号

t1='5'+'8'
t2="i love China"
print(t1)  # 58
print(t2)  # i love China

2.字符串的切片

与列表相似,这里举个例子示意:
s=“Chinese”
在这里插入图片描述

操作结果
s[0:2]Ch
s[1::3]he
s[:-4:2]Ci
s[::-1]esenihC

3.字符串常用内置函数/方法

方法含义
split(str="", num)以 str 为分隔符截取字符串(默认空格),如果 num 有指定值,则仅截取 num+1 个子字符串(默认为-1即所有)
join(seq)序列中的元素以指定的字符连接生成一个新的字符串
capitalize()将字符串的第一个字符转换为大写
lower() / upper()转换字符串中所有大写(小写)字符为小写(大写)
count(str)返回str在 string 里面出现的次数
url = "http://www.baidu.com/python/image/123456.jpg"
path1 =url.split(".") # 以“.” 进行分隔
path2 =url.split("/")[-1] # 分割之后是 ['http:', '', 'www.baidu.com', 'python', 'image', '123456.jpg'],再索引
print(path1)
print(path2)

[‘http://www’, ‘baidu’, ‘com/python/image/123456’, ‘jpg’]
123456.jpg

4.字符串格式化

元组

与列表类似,但是元组不可修改
语法:(element1,element2, ⋯ \cdots )

1.创建和访问元组

t1 = (1, 10.31, 'python')
t2 = 1, 10.31, 'python' # 不需要括号也可以
print(t1, type(t1))
print(t2, type(t2))
x = (1)
print(type(x))  # <class 'int'>

x = (1,)   # 单个元素的元组需要加逗号
print(type(x))  # <class 'tuple'>

x = ()
print(type(x))  # <class 'tuple'>

(1, 10.31, ‘python’) <class ‘tuple’>
(1, 10.31, ‘python’) <class ‘tuple’>
<class ‘int’>
<class ‘tuple’>
<class ‘tuple’>

3.更新和删除

week = ('Monday', 'Tuesday', 'Thursday', 'Friday')
week = week[:2] + ('Wednesday',) + week[2:]
print(week)  

(‘Monday’, ‘Tuesday’, ‘Wednesday’, ‘Thursday’, ‘Friday’)

元组中的元素值是不允许删除的,但可以使用del语句来删除整个元组

4.相关操作符

等号操作符:==
连接操作符 +
重复操作符 *
成员关系操作符 in、not in

5.内置方法

字典(dict)

字典是无序的 键:值(key:value)对集合,在同一个字典中键必须是互不相同的
值,可以取任何数据类型,但键必须是不可变的,如字符串,数字等。
语法:{key1:value1,key2:value2, ⋯ \cdots }
大括号 – 把所有元素绑在一起
逗号 – 将每个键值对分开
冒号 – 将键和值分开

1.创建和访问字典

1.1 直接创建:{ }

capital={'China':'Beijing','America':'NewYork','Japan':'Tokyo'}
print(capital,type(capital),capital['Japan'])

dt={'abc':123,98.6:23}
print(dt[98.6])

{‘China’: ‘Beijing’, ‘America’: ‘NewYork’, ‘Japan’: ‘Tokyo’} <class ‘dict’> Tokyo
23

1.2 dict()函数

dt1=dict()
dt1['a']=1
dt1['b']=2

dt2=dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
print(dt1,"\n",dt2)

{‘a’: 1, ‘b’: 2}
{‘sape’: 4139, ‘guido’: 4127, ‘jack’: 4098}

2.常用内置方法/函数

函数/方法描述
len(dict)返回字典的元素个数(键的个数)
dict.clear()删除字典内的所有元素
dict.get(key, default=None)返回指定键的值,如果值不在字典中返回默认值

集合(set)

集合与字典类似,是一组key的集合,但不存储value,且集合中key不重复(与数学上集合概念相似)

A set is an unordered collection with no duplicate elements

由于set存储的是无序集合,所以不能索引或切片

1.创建集合

  • 直接创建:{ }
  • set()函数:
week={'Monday','Tuesday','Wednesday','Thrusday'}
print(week,type(week),len(week))

num=set('12345')
print(num,type(num),len(num))

{‘Wednesday’, ‘Thrusday’, ‘Tuesday’, ‘Monday’} <class ‘set’> 4
{‘1’, ‘4’, ‘2’, ‘5’, ‘3’} <class ‘set’> 5

2.集合基本操作

  1. 添加元素:s.add(x)
    给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作
  2. 移除元素:
    s.remove(x):用于移除集合中的指定元素。如果元素不存在,则会发生错误
    s.discard(x):用于移除指定的集合元素。remove() 方法在移除一个不存在的元素时会发生错误,而 discard() 方法不会。
    set.pop() :用于随机移除一个元素。
  3. 清空元素:s.clear(x)
    清空集合s

3.常用内置方法

方法描述用法
intersection() / &返回两个集合的交集c=a.intersection(b) / c=a&b
union() / |返回两个集合的并集c=a.intersection(b) / c=a | b
difference() / –返回两个集合的差集c=a.difference(b) / c=a-b
len()返回集合的大小len(a)

参考连接:
https://www.runoob.com/python3/python3-tutorial.html
https://docs.python.org/3/tutorial/datastructures.html#tuples-and-sequences
https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.19700039.J_9059755190.4.68f13ff4I0F6Vx&postId=169962

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,作为AI,我无法亲自完成实验报告,但我可以为您提供一些关于Python列表元组字典集合字符串的基本定义和使用方法的信息。 1. 列表 列表Python中最常用的数据类型之一,它是一个有序的、可变的集合,可以包含不同类型的元素。可以使用方括号([])来创建列表,其中每个元素用逗号分隔。例如,下面的代码创建了一个包含整数、浮点数和字符串列表: ``` my_list = [1, 2.0, 'hello'] ``` 列表支持许多操作,例如追加元素、插入元素、删除元素、切片等。 2. 元组 元组Python中另一种常用的数据类型,它类似于列表,但是元组是不可变的。可以使用圆括号(())来创建元组,其中每个元素用逗号分隔。例如,下面的代码创建了一个包含整数和字符串元组: ``` my_tuple = (1, 'hello') ``` 元组支持许多操作,例如索引、切片等,但是不能对元组进行修改。 3. 字典 字典Python中用于存储键值对的数据类型。字典是无序的,可以包含不同类型的键和值。可以使用花括号({})来创建字典,其中每个键值对用冒号(:)分隔,每个键值对之间用逗号分隔。例如,下面的代码创建了一个包含整数和字符串字典: ``` my_dict = {'apple': 1, 'banana': 2, 'orange': 3, 'pear': 4} ``` 字典支持许多操作,例如添加键值对、删除键值对、访问键值对等。 4. 集合 集合Python中用于存储唯一元素的数据类型。集合是无序的,不能包含重复元素。可以使用花括号({})或者set()函数来创建集合,其中每个元素用逗号分隔。例如,下面的代码创建了一个包含整数和字符串集合: ``` my_set = {1, 2, 3, 'hello'} ``` 集合支持许多操作,例如添加元素、删除元素、求交集、求并集等。 5. 字符串 字符串Python中用于表示文本的数据类型。字符串是不可变的,可以使用单引号('')或者双引号("")来创建。例如,下面的代码创建了一个字符串: ``` my_string = 'hello world' ``` 字符串支持许多操作,例如索引、切片、拼接、替换等。 总的来说,Python中的这些数据类型都是非常有用的,可以帮助我们处理不同类型的数据。在实际应用中,我们需要根据具体的需求选择合适的数据类型来进行操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值