美文网首页
Python 数据结构与算法

Python 数据结构与算法

作者: JM68 | 来源:发表于2019-08-27 16:14 被阅读0次

WHAT

  • 介绍Python数据结构与算法第三方库 可用作学习也可用于直接使用算法
  • 介绍pysnooper--man's debugger

algorithms

algorithms第三方库

"""
介绍算法解决的是什么问题
There are people sitting in a circular fashion,
print every third member while removing them,
the next counter starts immediately after the member is removed.
Print till all the members are exhausted.
For example:
Input: consider 123456789 members sitting in a circular fashion,
Output: 369485271
"""

# 具体算法
def josephus(int_list, skip):
    skip = skip - 1                     # list starts with 0 index
    idx = 0
    len_list = (len(int_list))
    while len_list > 0:
        idx = (skip + idx) % len_list   # hash index to every 3rd
        yield int_list.pop(idx)
        len_list -= 1

pysooper Python运行记录利器

import pysnooper

# 跟踪日志记录
@pysnooper.snoop()
def josephus(int_list, skip):
    skip = skip - 1  # list starts with 0 index
    idx = 0
    len_list = (len(int_list))
    res = []
    while len_list > 0:
        idx = (skip + idx) % len_list  # hash index to every 3rd
        res.append(int_list.pop(idx))
        len_list -= 1
    return res


josephus([1, 2, 3, 4, 5, 6, 7, 8, 9], 3)
  • 输出日志
  • 是否现在更清楚知道解决思路?
Source path:... C:/Users/74109/Desktop/MxShop-master/l.py
Starting var:.. int_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
Starting var:.. skip = 3
15:52:54.569968 call        10 def josephus(int_list, skip):
15:52:54.569968 line        11     skip = skip - 1  # list starts with 0 index
Modified var:.. skip = 2
15:52:54.569968 line        12     idx = 0
New var:....... idx = 0
15:52:54.569968 line        13     len_list = (len(int_list))
New var:....... len_list = 9
15:52:54.569968 line        14     res = []
New var:....... res = []
15:52:54.569968 line        15     while len_list > 0:
15:52:54.569968 line        16         idx = (skip + idx) % len_list  # hash index to every 3rd
Modified var:.. idx = 2
15:52:54.569968 line        17         res.append(int_list.pop(idx))
Modified var:.. int_list = [1, 2, 4, 5, 6, 7, 8, 9]
Modified var:.. res = [3]
15:52:54.569968 line        18         len_list -= 1
Modified var:.. len_list = 8
15:52:54.569968 line        15     while len_list > 0:
15:52:54.569968 line        16         idx = (skip + idx) % len_list  # hash index to every 3rd
Modified var:.. idx = 4
15:52:54.569968 line        17         res.append(int_list.pop(idx))
Modified var:.. int_list = [1, 2, 4, 5, 7, 8, 9]
Modified var:.. res = [3, 6]
15:52:54.569968 line        18         len_list -= 1
Modified var:.. len_list = 7
15:52:54.569968 line        15     while len_list > 0:
15:52:54.569968 line        16         idx = (skip + idx) % len_list  # hash index to every 3rd
Modified var:.. idx = 6
15:52:54.569968 line        17         res.append(int_list.pop(idx))
Modified var:.. int_list = [1, 2, 4, 5, 7, 8]
Modified var:.. res = [3, 6, 9]
15:52:54.569968 line        18         len_list -= 1
Modified var:.. len_list = 6
15:52:54.569968 line        15     while len_list > 0:
15:52:54.569968 line        16         idx = (skip + idx) % len_list  # hash index to every 3rd
Modified var:.. idx = 2
15:52:54.569968 line        17         res.append(int_list.pop(idx))
Modified var:.. int_list = [1, 2, 5, 7, 8]
Modified var:.. res = [3, 6, 9, 4]
15:52:54.569968 line        18         len_list -= 1
Modified var:.. len_list = 5
15:52:54.570964 line        15     while len_list > 0:
15:52:54.570964 line        16         idx = (skip + idx) % len_list  # hash index to every 3rd
Modified var:.. idx = 4
15:52:54.570964 line        17         res.append(int_list.pop(idx))
Modified var:.. int_list = [1, 2, 5, 7]
Modified var:.. res = [3, 6, 9, 4, 8]
15:52:54.570964 line        18         len_list -= 1
Modified var:.. len_list = 4
15:52:54.570964 line        15     while len_list > 0:
15:52:54.570964 line        16         idx = (skip + idx) % len_list  # hash index to every 3rd
Modified var:.. idx = 2
15:52:54.570964 line        17         res.append(int_list.pop(idx))
Modified var:.. int_list = [1, 2, 7]
Modified var:.. res = [3, 6, 9, 4, 8, 5]
15:52:54.570964 line        18         len_list -= 1
Modified var:.. len_list = 3
15:52:54.570964 line        15     while len_list > 0:
15:52:54.570964 line        16         idx = (skip + idx) % len_list  # hash index to every 3rd
Modified var:.. idx = 1
15:52:54.570964 line        17         res.append(int_list.pop(idx))
Modified var:.. int_list = [1, 7]
Modified var:.. res = [3, 6, 9, 4, 8, 5, 2]
15:52:54.570964 line        18         len_list -= 1
Modified var:.. len_list = 2
15:52:54.570964 line        15     while len_list > 0:
15:52:54.570964 line        16         idx = (skip + idx) % len_list  # hash index to every 3rd
15:52:54.570964 line        17         res.append(int_list.pop(idx))
Modified var:.. int_list = [1]
Modified var:.. res = [3, 6, 9, 4, 8, 5, 2, 7]
15:52:54.570964 line        18         len_list -= 1
Modified var:.. len_list = 1
15:52:54.570964 line        15     while len_list > 0:
15:52:54.570964 line        16         idx = (skip + idx) % len_list  # hash index to every 3rd
Modified var:.. idx = 0
15:52:54.570964 line        17         res.append(int_list.pop(idx))
Modified var:.. int_list = []
Modified var:.. res = [3, 6, 9, 4, 8, 5, 2, 7, 1]
15:52:54.570964 line        18         len_list -= 1
Modified var:.. len_list = 0
15:52:54.572959 line        15     while len_list > 0:
15:52:54.572959 line        19     return res
15:52:54.572959 return      19     return res
Return value:.. [3, 6, 9, 4, 8, 5, 2, 7, 1]

相关文章

网友评论

      本文标题:Python 数据结构与算法

      本文链接:https://www.haomeiwen.com/subject/tebeectx.html