Python基础数据结构

列表

脚本操作符

拼接与截取

嵌套列表与比较

函数方法

元组

访问 修改 删除

元组运算符

内置函数

字典

创建字典

访问 修改 删除

特性

内置函数

集合

操作

内置函数

列表

序列中的每个值都有对应的位置值,称之为索引,第一个索引是 0,第二个索引是 1,依此类推。

列表都可以进行的操作包括索引,切片,加,乘,检查成员。

列表是最常用的 Python 数据类型,它可以作为一个方括号内的逗号分隔值出现。

列表的数据项不需要具有相同的类型。

ls = ['h', 'e', 'l', 'l', 'o'] #创建一个列表
print("打印列表值:")
print(ls[0])
print(ls[2])
print(ls[4])
print("从第二位开始(包含)截取到倒数第二位(不包含):")
print ("ls[1:-2]: ", ls[1:-2])

控制台:

打印列表值:
h
l
o
从第二位开始(包含)截取到倒数第二位(不包含):
ls[1:-2]:  ['e', 'l']

更新列表以及删除元素:

ls = ['h', 'e', 'l', 'l', 'o']  # 创建一个列表
print("第三个元素:", ls[2])
ls[2] = 'o'
print("更新后第三个元素:", ls[2])
print("原列表:", ls)
ls.append('w')
print("更新后:", ls)
del ls[5]
print("删除第6个元素后的列表:", ls)

控制台:

第三个元素: l
更新后第三个元素: o
原列表: ['h', 'e', 'o', 'l', 'o']
更新后: ['h', 'e', 'o', 'l', 'o', 'w']
删除第6个元素后的列表: ['h', 'e', 'o', 'l', 'o']

脚本操作符

ls=[1,2,3]
print("ls的长度:",len(ls))
ls1=ls+[4,5,6]
print("合并后的列表:",ls1)
ls2=["x"]*4
print("重复多次元素的列表:",ls2)
print("列表迭代:")
for x in [2,3,4]:
    print(x)

控制台:

ls的长度: 3
合并后的列表: [1, 2, 3, 4, 5, 6]
重复多次元素的列表: ['x', 'x', 'x', 'x']
列表迭代:
2
3
4

拼接与截取

ls = ["Dio", "Jotaro", "Joestar"]
print("第三个元素:", ls[2])
print("倒数第二个元素", ls[-2])
print("第二个元素后所有元素:", ls[1:])
ls1 = ls + ["Diablo"]
print("拼接后的新列表:", ls1)

控制台:

第三个元素: Joestar
倒数第二个元素 Jotaro
第二个元素后所有元素: ['Jotaro', 'Joestar']
拼接后的新列表: ['Dio', 'Jotaro', 'Joestar', 'Diablo']

嵌套列表与比较

嵌套:

ls=['a','b','c']
ls1=[1,2,3]
ls2=[ls,ls1]
print(ls2[0])
print(ls2[1][2])

控制台:

['a', 'b', 'c']
3

比较:

import operator as op  # 需要导入模块

a = [1, 2]
b = [2, 3]
c = [2, 3]
print("a=b:", op.eq(a, b))
print("b=c:", op.eq(b, c))

控制台:

a=b: False
b=c: True

函数方法

1

list.append(obj)
在列表末尾添加新的对象

2

list.count(obj)
统计某个元素在列表中出现的次数

3

list.extend(seq)
在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)

4

list.index(obj)
从列表中找出某个值第一个匹配项的索引位置

5

list.insert(index, obj)
将对象插入列表

6

list.pop([index=-1])
移除列表中的一个元素(默认最后一个元素),并且返回该元素的值

7

list.remove(obj)
移除列表中某个值的第一个匹配项

8

list.reverse()
反向列表中元素

9

list.sort( key=None, reverse=False)
对原列表进行排序

10

list.clear()
清空列表

11

list.copy()
复制列表

12

len(list)
列表元素个数

13

max(list)
返回列表元素最大值

14

min(list)
返回列表元素最小值

15

list(seq)
将元组转换为列表

元组

元组与列表类似,不同之处在于元组的元素不能修改。

元组使用小括号 ( ),列表使用方括号 [ ]。

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

tup1=("Dio", "Jotaro", "Joestar")
tup2=(1,2,3)
tup3='W','E','F' #不需要括号也可以
print(type(tup3))
tup4=(60) #元组中只包含一个元素时,需要在元素后面添加逗号 , ,否则括号会被当作运算符使用
print(type(tup4))
tup5=(60,)
print(type(tup5))

控制台:



访问 修改 删除

print("元组可以使用下标索引来访问元组中的值")
tup1=("Dio", "Jotaro", "Joestar")
tup2=(2,4,6)
print("tup1[2]:",tup1[1])
print("tup2[0:2]:",tup2[0:2])
print()
print("元组中的元素值是不允许修改的,但我们可以对元组进行连接组合")
tup3=tup1+tup2
print(tup3)
print()
print("元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组")
print(tup2)
del tup2
print("删除后的元组tup2:",tup2)

控制台:

元组可以使用下标索引来访问元组中的值
tup1[2]: Jotaro
tup2[0:2]: (2, 4)

元组中的元素值是不允许修改的,但我们可以对元组进行连接组合
('Dio', 'Jotaro', 'Joestar', 2, 4, 6)

元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组
(2, 4, 6)
Traceback (most recent call last):
  File "C:\MySpace\MyCode\PyCode\list.py", line 14, in 
    print("删除后的元组tup2:",tup2)
NameError: name 'tup2' is not defined

这里删除后出现报错。

元组运算符

tup0=(1,2,3)
print(len(tup0))
tup1=(4,5,6)
print("tup1+tup0:",tup1+tup0)
tup2=(7,8,9)
tup2+=tup1
print("tup2+=tup1:",tup2)
print("('hi',)*3:",('hi',)*3)
print("3 in(1,2,3):",3 in (1,2,3))

控制台:

3
tup1+tup0: (4, 5, 6, 1, 2, 3)
tup2+=tup1: (7, 8, 9, 4, 5, 6)
('hi',)*3: ('hi', 'hi', 'hi')
3 in(1,2,3): True

内置函数

len(tuple)
计算元组元素个数。
max(tuple)
返回元组中元素最大值。
min(tuple)
返回元组中元素最小值。
tuple(iterable)
将可迭代系列转换为元组。
tup0=(2,4,6)
print(max(tup0))
print(min(tup0))
print(len(tup0))
ls=['h','w','e']
tup1=tuple(ls)
print(tup1)

控制台:

6
2
3
('h', 'w', 'e')

字典

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中。

键必须是唯一的,但值则不必。

值可以取任何数据类型,但键必须是不可变的,如字符串,数字。

创建字典

#使用大括号 { } 创建空字典:
dic1={'a':'A','b':'B','c':'C'}
print(dic1)
print(len(dic1))
print(type(dic1))
#使用内建函数 dict() 创建字典
dic2=dict()
print(dic2)
print(len(dic2))
print(type(dic2))

控制台:

{'a': 'A', 'b': 'B', 'c': 'C'}
3

{}
0

访问 修改 删除

如果用字典里没有的键访问数据,会输出错误

dic1 = {'a': 'A', 'b': 'B', 'c': 'C'}
print("dic1['b']:'", dic1['b'])
print("修改:")
dic1['b'] = 'BB'  # 修改
dic1['d'] = 'D'  # 添加
print(dic1)
print("删除:")
del dic1['b']  # 删除键
print(dic1)
dic1.clear()  # 情况
print(dic1)
del dic1  # 删除字典

控制台:

dic1['b']:' B
修改:
{'a': 'A', 'b': 'BB', 'c': 'C', 'd': 'D'}
删除:
{'a': 'A', 'c': 'C', 'd': 'D'}
{}

特性

字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。

不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住:

dic1 = {'a': 'A', 'b': 'B', 'b': 'C'}
print("dic1['b']:'", dic1['b'])

控制台:

dic1['b']:' C

键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行:

dic1={['a']:'A','w':'W'}

控制台:

Traceback (most recent call last):
  File "C:\MySpace\MyCode\PyCode\dic.py", line 1, in 
    dic1={['a']:'A','w':'W'}
TypeError: unhashable type: 'list'

内置函数

1

dict.clear()
删除字典内所有元素

2

dict.copy()
返回一个字典的浅复制

3

dict.fromkeys()
创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值

4

dict.get(key, default=None)
返回指定键的值,如果键不在字典中返回 default 设置的默认值

5

key in dict
如果键在字典dict里返回true,否则返回false

6

dict.items()
以列表返回一个视图对象

7

dict.keys()
返回一个视图对象

8

dict.setdefault(key, default=None)
和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default

9

dict.update(dict2)
把字典dict2的键/值对更新到dict里

10

dict.values()
返回一个视图对象

11

pop(key[,default])
删除字典 key(键)所对应的值,返回被删除的值。

12

popitem()
返回并删除字典中的最后一对键和值。

集合

集合(set)是一个无序的不重复元素序列。

可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

set1 = {'h', 'e', 'l', 'l', 'o'}
print(set1)  # 去重
print('o' in set1)  # 判断元素是否在集合里
print('w' in set1)
# 集合运算
print("集合运算:")
set2 = set('helloworld')
set3 = set('hellomorn')
print(set2)
print(set3)
print("set2-set3 :", set2 - set3)  # 集合set2中包含而集合set3中不包含的元素
print("set2|set3 :", set2 | set3)  # 集合set2或set3中包含的所有元素
print("set2&set3 :", set2 & set3)  # 集合set2和set3中都包含了的元素
print("set2^set3 :", set2 ^ set3)  # 不同时包含于set2和set3的元素

控制台:

{'l', 'h', 'e', 'o'}
True
False
集合运算:
{'h', 'r', 'e', 'd', 'l', 'w', 'o'}
{'h', 'r', 'm', 'e', 'n', 'l', 'o'}
set2-set3 : {'d', 'w'}
set2|set3 : {'h', 'r', 'm', 'e', 'd', 'n', 'l', 'w', 'o'}
set2&set3 : {'h', 'r', 'e', 'l', 'o'}
set2^set3 : {'m', 'd', 'n', 'w'}


操作

s1=set('ape')
print(s1)
s1.add('w')#添加
print(s1)
s1.update({2,3})
print(s1)
s1.update([2,4],[5,6])
print(s1)

控制台:

{'a', 'p', 'e'}
{'a', 'w', 'p', 'e'}
{'a', 2, 3, 'e', 'w', 'p'}
{2, 3, 4, 5, 'e', 6, 'p', 'a', 'w'}
s1 = set('abcdef')
print(s1)
s1.remove('b')  # 移除
print(s1)
s1.discard('f')
print(s1)
s1.pop()  # 随机删除
print(s1)

控制台:

{'d', 'e', 'f', 'b', 'c', 'a'}
{'d', 'e', 'f', 'c', 'a'}
{'d', 'e', 'c', 'a'}
{'e', 'c', 'a'}

内置函数

add()

为集合添加元素

clear()

移除集合中的所有元素

copy()

拷贝一个集合

difference()

返回多个集合的差集

difference_update()

移除集合中的元素,该元素在指定的集合也存在。

discard()

删除集合中指定的元素

intersection()

返回集合的交集

intersection_update()

返回集合的交集。

isdisjoint()

判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。

issubset()

判断指定集合是否为该方法参数集合的子集。

issuperset()

判断该方法的参数集合是否为指定集合的子集

pop()

随机移除元素

remove()

移除指定元素

symmetric_difference()

返回两个集合中不重复的元素集合。

symmetric_difference_update()

移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。

union()

返回两个集合的并集

update()

给集合添加元素

你可能感兴趣的:(Python,python,开发语言)