非常简单的列表推导用于库存函数

0 投票
6 回答
775 浏览
提问于 2025-04-18 17:16

我正在制作一个游戏,里面有一个玩家的物品栏系统,这个物品栏是一个最多可以放5个物品的列表。我通过保持这个列表的长度始终为5来限制物品栏的大小,并用None类型填充空位。

我在想有没有更简单的方法来计算这个列表中不包括None类型的长度。我猜这个可以通过下面的列表推导式来更简单地实现:

Inventory = [1, 2, None, None, 5, None]
items = [i for i in range(len(Inventory)) if Inventory[i] is not None
itemCount = len(items)

6 个回答

0

这段代码的目的是为了展示如何在程序中处理一些特定的任务。它可能涉及到一些基本的编程概念,比如变量、循环或者条件判断。通过这些代码,程序可以根据不同的情况做出不同的反应。

在编写代码时,我们通常会使用一些简单的指令来告诉计算机该做什么。比如,可能会有一个指令让计算机重复做某件事情,或者根据某个条件来决定下一步该怎么做。

总之,这段代码是一个示例,帮助我们理解程序是如何工作的,以及我们可以用它来解决问题的方式。

In [1]: inventory = [1, 2, None, None, 5, None]

In [2]: sum(map(bool, inventory))
Out[2]: 3
0

计算一下有多少个None,然后从总长度中减去这个数量:

>>> Inventory = [1, 2, None, None, 5, None]
>>> len(Inventory)-Inventory.count(None)
3
1

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如说,当你在写代码时,可能会发现某个功能没有按照预期工作。这时候,很多人会去网上查找解决方案,比如在StackOverflow上提问或搜索。

StackOverflow是一个程序员交流的平台,大家可以在这里分享自己的问题和解决方案。你可以看到很多人遇到过类似的问题,他们会把自己的经历和解决办法写出来,帮助其他人。

在提问时,最好把你的问题描述得清楚一些,包含你遇到的具体情况、你尝试过的解决方法,以及你希望得到的帮助。这样,其他人才能更好地理解你的问题,并给出有效的建议。

总之,遇到问题时,不要害怕寻求帮助,利用好像StackOverflow这样的资源,可以让你更快地找到解决方案,提升自己的编程技能。

>>> Inventory = [1, 2, None, None, 5, None]
>>> len(filter(None, Inventory))
3
2

这段代码计算库存中不为None的物品数量,也就是列表中有多少个有效的物品:

len([item for item in Inventory if item is not None])

这段代码则是统计None出现的次数,然后从总长度中减去这个次数:

5 - Inventory.count(None)
2
>>> Inventory = [1, 2, None, None, 5, None]

使用列表推导

>>> len([i for i in Inventory if i is not None])
3

使用 filter

>>> len(filter(lambda i : i is not None, Inventory))
3

filter 的工作原理是,它接受一个函数和一个列表,然后根据这个函数来删除列表中的某些元素。比如,我可以这样写一个函数:

def checkIfNotNone(item):
    return item is not None

然后我可以用 filter 来生成下面这个列表。

filter(checkIfNotNone, Inventory)
[1, 2, 5]

现在我可以检查一下 len,结果会是 3。其实我做的事情是一样的,不过这次我没有用 def 来定义一个函数,而是用了 lambda 表达式,这基本上就是一个匿名函数,我只打算在这个地方用它。

撰写回答