Python-我不知道如何在此代码中最小工作

鲁伊斯

我的老师给了我这段代码:

def n_o_c(Q,v):  
    M=[None]*(Q+1)  
    m={}  
    M[0]=0  
    for q in xrange(1,Q+1):  
        M[q]=min(M[q-a]+1 for a in v if q-a>=0)    
    return M[Q],m  

print n_o_c(18,[1,2,5])  

首先,我解释了脚本,这是一台假定的投币机,我必须知道我需要多少硬币才能支付Q个数量(含v个硬币)(对于18个3x5硬币,1x2硬币和1x1硬币,我们可以做的硬币可能是IE减少)

我不明白那条M [q]行是什么,我尝试打印M,结果是从1到18的每个数字都需要多少个硬币才能完成该数字。M = [0,1,1,2,2,3,2,2,3,3,2,3,3,4,4,3,4,4,5] q = [0,1,2, 3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]

有人可以向我解释一下最小的工作原理吗?

我已经做过了(我知道这不是解决练习的好方法,但我不知道有更好的方法)。解决了:

def n_o_c(Q,v):  
    M=[None]*(Q+1)  
    m={}  
    M[0]=0  
    for q in xrange(1,Q+1):  
        M[q]=min(M[q-a]+1 for a in v if q-a>=0)
    monedas=0
    total=Q
    m=[] # did this to change dictionary to array
    while(monedas<M[Q]):
        for a in v[::-1]:
            if total-a >= 0:
                total = total-a
                monedas = monedas +1
                m.append(a)
                break #I forget this break
    return M[Q],m  

print n_o_c(18,[1,2,5])  
阿巴内特

min功能是简单的部分:

以迭代方式返回最小的项目

棘手的一点是,可迭代的功能是什么?

M[q]=min(M[q-a]+1 for a in v if q-a>=0)    

(M[q-a]+1 for a in v if q-a>=0)称为生成器表达式;更一般地说,这是一种理解。

官方教程中的列表理解开始,以了解一般的理解方式,然后是迭代器和以下两个部分(生成器和生成器表达式),以了解生成器表达式有何不同。*

但我可以在这里总结一下,至少足以让您入门。

首先,列表理解:

[M[q-a]+1 for a in v if q-a>=0]

这意味着您要构建一个列表,就像您将其展开到这样的循环中一样:

value = []
for a in v:
    if q-a>=0:
        value.append(M[q-a]+1)
M[q] = min(value)

或者,更直观,尝试朗读吧:每一个列表M[q-a]+1每个av,如果q-a>=0有意义的,因为一个英文句子,和手段完全同样的事情了Python。(如果您有数学背景,则可能想用集合显示来思考它,但是我假设您没有。)

生成器表达式执行相同的操作,除了生成列表而不是构建列表之外,它在您对其进行迭代时根据需要创建值。您可以将其视为一种神奇的列表,它现在不会浪费内存或时间。要在Python中进行拼写,只需将方括号[]变成括号()(在本例中可以省略括号,因为min调用中已经有括号)。要大声朗读,只需离开“列表清单”部分。


*掌握了这一点之后,如果您想了解更多信息,请看一下itertools模块,阅读David Beazley撰写的System ProgrammersGenerator Tricks和google,了解Greg Ewing的有关发电机的演示。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Python中循环,因为我不知道如何

来自分类Dev

我似乎不知道如何下载 python shell

来自分类Dev

我不知道为什么在此python函数中出现索引错误?

来自分类Dev

我不知道如何在glade / python(快速生成)中向菜单项添加功能

来自分类Dev

如何在不知道我在 Python 中查找的对象名称的情况下解析 JSON 文件?

来自分类Dev

不知道为什么我不能在Python中缩进此代码

来自分类Dev

我不知道为什么使用随附的python代码获得W与PT的多个图形

来自分类Dev

我不知道如何处理此Python错误TypeError:“ tuple”对象不可调用

来自分类Dev

我不知道该如何处理一个废弃的python模块

来自分类Dev

Python-散点图问题-不知道如何为我想要的结果构建图?

来自分类Dev

我的python循环失控了。不知道如何解决这个问题

来自分类Dev

如何在不知道Python中会生成多少列的情况下拆分列?

来自分类Dev

不知道如何在 Windows 上安装这个 python 模块?

来自分类Dev

又一个不知道如何在 Python 中使用 unicode 的人

来自分类Dev

不知道为什么我的python输出循环

来自分类Dev

我的python代码没有将数据插入数据库。我不知道为什么?

来自分类Dev

我是否有一个空函数返回,使用python代码模块时我不知道?

来自分类Dev

我的python代码没有将数据插入数据库。我不知道为什么?

来自分类Dev

python decorator如何在此代码上工作?

来自分类Dev

Errno 13 python 2.7 不知道如何修复

来自分类Dev

我正在学习 opencv-python 图像处理,所以我写了这个小代码,但出现错误我不知道我错在哪里

来自分类Dev

Python:如何在不知道DST是否生效的情况下将时区感知时间戳转换为UTC

来自分类Dev

Python-如果不知道扩展名,如何在文件夹中找到文件?

来自分类Dev

Python Beautifulsoup:如何在不知道相应属性名称的情况下通过属性值查找标签?

来自分类Dev

我想为python获取dpkt模块,我不知道。我需要拦截来自VPN的流量

来自分类Dev

我想为python获取dpkt模块,我不知道。我需要拦截来自VPN的流量

来自分类Dev

当我运行我的 python 文本游戏时,我收到一个属性错误,我不知道如何解决

来自分类Dev

python /我认为它可以简短地编写它,但是我不知道

来自分类Dev

我可以通过Python统一编程游戏吗?我不知道C#

Related 相关文章

  1. 1

    在Python中循环,因为我不知道如何

  2. 2

    我似乎不知道如何下载 python shell

  3. 3

    我不知道为什么在此python函数中出现索引错误?

  4. 4

    我不知道如何在glade / python(快速生成)中向菜单项添加功能

  5. 5

    如何在不知道我在 Python 中查找的对象名称的情况下解析 JSON 文件?

  6. 6

    不知道为什么我不能在Python中缩进此代码

  7. 7

    我不知道为什么使用随附的python代码获得W与PT的多个图形

  8. 8

    我不知道如何处理此Python错误TypeError:“ tuple”对象不可调用

  9. 9

    我不知道该如何处理一个废弃的python模块

  10. 10

    Python-散点图问题-不知道如何为我想要的结果构建图?

  11. 11

    我的python循环失控了。不知道如何解决这个问题

  12. 12

    如何在不知道Python中会生成多少列的情况下拆分列?

  13. 13

    不知道如何在 Windows 上安装这个 python 模块?

  14. 14

    又一个不知道如何在 Python 中使用 unicode 的人

  15. 15

    不知道为什么我的python输出循环

  16. 16

    我的python代码没有将数据插入数据库。我不知道为什么?

  17. 17

    我是否有一个空函数返回,使用python代码模块时我不知道?

  18. 18

    我的python代码没有将数据插入数据库。我不知道为什么?

  19. 19

    python decorator如何在此代码上工作?

  20. 20

    Errno 13 python 2.7 不知道如何修复

  21. 21

    我正在学习 opencv-python 图像处理,所以我写了这个小代码,但出现错误我不知道我错在哪里

  22. 22

    Python:如何在不知道DST是否生效的情况下将时区感知时间戳转换为UTC

  23. 23

    Python-如果不知道扩展名,如何在文件夹中找到文件?

  24. 24

    Python Beautifulsoup:如何在不知道相应属性名称的情况下通过属性值查找标签?

  25. 25

    我想为python获取dpkt模块,我不知道。我需要拦截来自VPN的流量

  26. 26

    我想为python获取dpkt模块,我不知道。我需要拦截来自VPN的流量

  27. 27

    当我运行我的 python 文本游戏时,我收到一个属性错误,我不知道如何解决

  28. 28

    python /我认为它可以简短地编写它,但是我不知道

  29. 29

    我可以通过Python统一编程游戏吗?我不知道C#

热门标签

归档