Python 简单的数据结构(一)

简介:

学习笔记

#python 3.5.2


解压序列赋值给多个变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
>>> x=(1,2,3)
>>> a,b,c=x
>>> a
1
>>> b
2
>>> c
3
>>> data=[ '1' , '2' , '3' , '4' , '5' ]
>>> _,a,_,_,b=data
>>> a
'2'
>>> b
'5'
>>> y=(3,4)
>>> a,b,c=y
Traceback (most recent call last):
   File  "<pyshell#14>" , line 1,  in  <module>
     a,b,c=y
ValueError: not enough values to unpack (expected 3, got 2)
>>> 
>>> data=[ '1' ,2,(3,4),5]
>>> a,b,L,c=data
>>> L
(3, 4)
>>> a
'1'
>>> c
5
>>>

  解压可迭代对象赋值给多个变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
>>> L=[1,2,3,4,5,6]
>>>  head ,* tail =L
>>>  head
1
>>>  tail
[2, 3, 4, 5, 6]
>>>  head ,*middle, tail =L
>>>  head
1
>>> middle
[2, 3, 4, 5]
>>>  tail
6
>>> L=[ 'aaa' ,10,(1,2,3), 'dddd' ]
>>>  head ,*middle, tail =L
>>>  head
'aaa'
>>> middle
[10, (1, 2, 3)]
>>>  tail
'dddd'
>>> name,age,(a,b,c),addr=L
>>> a
1
>>> b
2
>>> c
3
>>> addr
'dddd'
>>> age
10
>>>


  保留最后N个元素

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
>>> from collections  import  deque
>>> q=deque(maxlen=4)
>>> q.append(1)
>>> q.append(2)
>>> q.append(3)
>>> q
deque([1, 2, 3], maxlen=4)
>>> q.append(4)
>>> q
deque([1, 2, 3, 4], maxlen=4)
>>> q.append(5)
>>> q
deque([2, 3, 4, 5], maxlen=4)
>>> q.append(6)
>>> q
deque([3, 4, 5, 6], maxlen=4)
>>> q.appendleft(0)
>>> q
deque([0, 3, 4, 5], maxlen=4)
>>> q.appendleft(-1)
>>> q
deque([-1, 0, 3, 4], maxlen=4)
>>>


查找最大或最小的N个元素

1
2
3
4
5
6
7
8
9
10
11
>>>  import  heapq
>>> nums = [1, 8, 2, 23, 7, -4, 18, 23, 42, 37, 2]
>>> heapq.nlargest(3,nums)
[42, 37, 23]
>>> heapq.nlargest(4,nums)
[42, 37, 23, 23]
>>> heapq.nsmallest(2,nums)
[-4, 1]
>>> heapq.nsmallest(4,nums)
[-4, 1, 2, 2]
>>>


实现一个优先级队列

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
>>>  import  heapq
>>> queue=[]
>>> heapq.heappush(queue,(3, 'three' ))
>>> heapq.heappush(queue,(2, 'two' ))
>>> heapq.heappush(queue,(5, 'five' ))
>>> heapq.heappush(queue,(1, 'one' ))
>>> heapq.heappush(queue,(4, 'four' ))
>>> heapq.heappop(queue)
(1,  'one' )
>>> heapq.heappop(queue)
(2,  'two' )
>>> heapq.heappop(queue)
(3,  'three' )
>>> heapq.heappop(queue)
(4,  'four' )
>>> heapq.heappop(queue)
(5,  'five' )
>>>



字典中键映射多个值

1
2
3
4
5
6
7
8
9
10
11
>>> from collections  import  defaultdict
>>> d=defaultdict(list)
>>> d[ 'a' ].append(1)
>>> d[ 'a' ].append(2)
>>> d[ 'a' ].append(3)
>>> d[ 'b' ].append(-1)
>>> d[ 'b' ].append(-2)
>>> d[ 'c' ].append( 'C' )
>>> d
defaultdict(<class  'list' >, { 'b' : [-1, -2],  'c' : [ 'C' ],  'a' : [1, 2, 3]})
>>>

 


字典保持顺序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
>>> from collections  import  OrderedDict
>>> d=OrderedDict()
>>> d[ 'B' ]=2
>>> d[ 'A' ]=1
>>> d[ 'C' ]=3
>>> d[ 'F' ]=6
>>> d[ 'E' ]=5
>>> d
OrderedDict([( 'B' , 2), ( 'A' , 1), ( 'C' , 3), ( 'F' , 6), ( 'E' , 5)])
>>>  for  in  d:
         print(i,d[i])
B 2
A 1
C 3
F 6
E 5
>>> D=dict()
>>> D[ 'B' ]=2
>>> D[ 'A' ]=1
>>> D[ 'C' ]=3
>>> D[ 'F' ]=6
>>> D[ 'E' ]=5
>>>  for  in  D:
         print(i,D[i])
A 1
F 6
C 3
B 2
E 5
>>>



字典的运算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
>>> prices = {
     'ACME' : 45.23,
     'AAPL' : 612.78,
     'IBM' : 205.55,
     'HPQ' : 37.20,
     'FB' : 10.75
}
>>> min_price=min(zip(prices.values(),prices.keys()))
>>> min_price
(10.75,  'FB' )
>>> max_price=max(zip(prices.values(),prices.keys()))
>>> max_price
(612.78,  'AAPL' )
>>> prices_sorted=sorted(zip(prices.values(),prices.keys()))
>>> prices_sorted
[(10.75,  'FB' ), (37.2,  'HPQ' ), (45.23,  'ACME' ), (205.55,  'IBM' ), (612.78,  'AAPL' )]
>>> min(prices)
'AAPL'
>>> max(prices)
'IBM'
>>> min(prices,key=lambda x:prices[x])
'FB'
>>> max(prices,key=lambda x:prices[x])
'AAPL'
>>> prices[min(prices,key=lambda x:prices[x])]
10.75
>>> prices[max(prices,key=lambda x:prices[x])]
612.78
>>>



查找两个字典的相同点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
>>> a = {
     'x'  : 1,
     'y'  : 2,
     'z'  : 3
}
>>> b = {
     'w'  : 10,
     'x'  : 11,
     'y'  : 2
}
>>> a.keys() & b.keys()
{ 'x' 'y' }
>>> a.keys() - b.keys()
{ 'z' }
>>> a.items() & b.items()
{( 'y' , 2)}
>>>


删除序列相同元素并保持顺序

1
2
3
4
5
6
7
8
9
>>> def dedupe(items):
seen = set ()
for  item  in  items:
if  item not  in  seen:
yield item
seen.add(item)
>>> a = [1, 5, 2, 1, 9, 1, 5, 10]
>>> list(dedupe(a))
[1, 5, 2, 9, 10]

>>> 



命名切片

1
2
3
4
5
6
7
>>> record =  '....................100 .......513.25 ..........'
>>> shares=slice(20,23)
>>> price=slice(31,37)
>>> cost=int(record[shares])*float(record[price])
>>> cost
51325.0
>>>











本文转自 chaunceyjiang  51CTO博客,原文链接:http://blog.51cto.com/cqwujiang/1948892,如需转载请自行联系原作者
目录
相关文章
|
5月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
609 0
|
8月前
|
存储 监控 安全
企业上网监控系统中红黑树数据结构的 Python 算法实现与应用研究
企业上网监控系统需高效处理海量数据,传统数据结构存在性能瓶颈。红黑树通过自平衡机制,确保查找、插入、删除操作的时间复杂度稳定在 O(log n),适用于网络记录存储、设备信息维护及安全事件排序等场景。本文分析红黑树的理论基础、应用场景及 Python 实现,并探讨其在企业监控系统中的实践价值,提升系统性能与稳定性。
455 1
|
存储 开发者 索引
Python 中常见的数据结构
这些数据结构各有特点和适用场景,在不同的编程任务中发挥着重要作用。开发者需要根据具体需求选择合适的数据结构,以提高程序的效率和性能
558 156
|
存储 算法 搜索推荐
Python 中数据结构和算法的关系
数据结构是算法的载体,算法是对数据结构的操作和运用。它们共同构成了计算机程序的核心,对于提高程序的质量和性能具有至关重要的作用
509 153
|
存储 开发者 Python
Python 中的数据结构与其他编程语言数据结构的区别
不同编程语言都有其设计理念和应用场景,开发者需要根据具体需求和语言特点来选择合适的数据结构
596 151
|
存储 索引 Python
Python编程数据结构的深入理解
深入理解 Python 中的数据结构是提高编程能力的重要途径。通过合理选择和使用数据结构,可以提高程序的效率和质量
551 156
|
算法 开发者 计算机视觉
燃爆全场!Python并查集:数据结构界的网红,让你的代码炫酷无比!
在编程的世界里,总有一些数据结构以其独特的魅力和高效的性能脱颖而出,成为众多开发者追捧的“网红”。今天,我们要介绍的这位明星,就是Python中的并查集(Union-Find)——它不仅在解决特定问题上大放异彩,更以其优雅的设计和强大的功能,让你的代码炫酷无比,燃爆全场!
192 0
|
存储 缓存 监控
局域网屏幕监控系统中的Python数据结构与算法实现
局域网屏幕监控系统用于实时捕获和监控局域网内多台设备的屏幕内容。本文介绍了一种基于Python双端队列(Deque)实现的滑动窗口数据缓存机制,以处理连续的屏幕帧数据流。通过固定长度的窗口,高效增删数据,确保低延迟显示和存储。该算法适用于数据压缩、异常检测等场景,保证系统在高负载下稳定运行。 本文转载自:https://www.vipshare.com
421 66
|
12月前
|
存储 人工智能 索引
Python数据结构:列表、元组、字典、集合
Python 中的列表、元组、字典和集合是常用数据结构。列表(List)是有序可变集合,支持增删改查操作;元组(Tuple)与列表类似但不可变,适合存储固定数据;字典(Dictionary)以键值对形式存储,无序可变,便于快速查找和修改;集合(Set)为无序不重复集合,支持高效集合运算如并集、交集等。根据需求选择合适的数据结构,可提升代码效率与可读性。

推荐镜像

更多