zl程序教程

您现在的位置是:首页 >  后端

当前栏目

python 四大基础数据结构及操作

Python基础数据结构 操作 四大
2023-06-13 09:11:05 时间

了解变量和引用

变量简单地说就是指向了一个实体

引用简单地说就是指向变量的变量

>>> a = 1
>>> b = a
>>> id(a)
1778508560
>>> id(b)
1778508560

基础数据结构的CRUD操作

List(列表)

list中存的元素是引用

create(增加)

append

末尾添加元素

>>> l = []
>>> id(l)
55200584
>>> l.append("a")
>>> l
['a']
>>> id(l)
55200584

++=

+

拼接两个列表, 然后返回一个新列表

+=

>>> l = ['a']
>>> id(l)
55200664
>>> l += ['b']
>>> id(l)
55200664
>>> l
['a', 'b']

**=

>>> a = 'a'
>>> id(a)
53622432
>>> l = [a] * 10
>>> l
['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a']
>>> id(l[0])
53622432
>>> id(l[1])
53622432
>>> id(l[9])
53622432

# 赋值语句之后, a已经是一个新的对象了
>>> a = 'b'
>>> l
['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a']
>>> id(a)
53647264

insert

指定位置添加元素

l.insert(0, 'b')

Retrieve(检索)

索引取值

所有序列都支持索引取值

切片

your_list[start:end:step]
# 取一段区间
your_list[start:end]

# 取最后一个值
your_list[-1]

# 间隔问题
your_list[1:20:2]

index

>>> l
['a', 'b', 'c']
>>> l.index('a')
0

Update(更新)

索引赋值

l[0] = 'a_1'

切片赋值

>>> l
['a_1', 'a_2', 'b', 'c']
>>> l[0:2] = "a"
>>> l
['a', 'b', 'c']
>>> l[0:2] = 1

DELETE(删除)

pop()

从末尾删除元素并返回

>>> l
['a', 'b', 'c']
>>> x = l.pop()
>>> l
['a', 'b']
>>> x
'c'

clear()

清楚当前列表的元素, 不会改变列表的内存地址.

★SORT(排序)

sort()

>>> l
[1, 3, 2, 6, 4]
>>> l.sort()
>>> l
[1, 2, 3, 4, 6]

sorted

排序后返回新列表

>>> l2 = sorted(l)
>>> l
[1, 3, 2, 6, 4]
>>> l2
[1, 2, 3, 4, 6]
>>> id(l)
55201384
>>> id(l2)
55200984

reverse

>>> l2
[1, 2, 3, 4, 6]
>>> l2.reverse()
>>> l2
[6, 4, 3, 2, 1]

reversed

倒序之后返回新列表

>>> l
[1, 3, 2, 6, 4]
>>> list(reversed(l))
[4, 6, 2, 3, 1]

tuple

  • Create 无
  • Retrieve
    • 索引取值
    • index
    • 切片
  • Update 无
  • Delete 无

dict

Create

键对值赋值

update

提供合并字典的功能

>>> d
{'a': 1}
>>> d2 = {"b":2, "c": 3}
>>> d.update(d2)
>>> d
{'a': 1, 'b': 2, 'c': 3}

setdefault

如果字典中没有当前key, 那么就设置默认值

>>> d
{'a': 1, 'b': 2, 'c': 3}
>>> d.setdefault('b', 0)
2
>>> d.setdefault('d', 0)
0
>>> d
{'a': 1, 'b': 2, 'c': 3, 'd': 0}

Retrieve

键对值访问

get

键对值访问缺失key会报错, 而get可以指定默认值

>>> d['e']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'e'
>>> d.get('f')
>>> d.get('f', 0)
0

keys()

返回所有key

d.keys()

values()

返回所有value

d.values()

items()

返回所有键对值

d.items()

Update

键对值赋值

 d['a'] = 100

update

>>> d.update({"b": 200, "c": 300})
>>> d
{'a': 100, 'b': 200, 'c': 300, 'd': 0}

Delete

  • pop(key) 删除当前元素并返回value
  • popitem() 对于人来说, 相当于随机返回一个item
  • clear()

set

Create

  • add
  • update

Retrieve

运算符in

>>> s
{'a'}
>>> "a" in s
True

update

  • union 合并两个set, 并返回一个新的set

delete

remove 和discard

discard缺失元素时不会报错, 而remove会报错

>>> s
{'b', 'c', 'a'}
>>> s.remove("a")
>>> s
{'b', 'c'}
>>> s.discard("e")
>>> s.remove("a")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'a'
>>>

pop()

当成无序删除并返回元素