非常简单的列表推导用于库存函数
我正在制作一个游戏,里面有一个玩家的物品栏系统,这个物品栏是一个最多可以放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 个回答
这段代码的目的是为了展示如何在程序中处理一些特定的任务。它可能涉及到一些基本的编程概念,比如变量、循环或者条件判断。通过这些代码,程序可以根据不同的情况做出不同的反应。
在编写代码时,我们通常会使用一些简单的指令来告诉计算机该做什么。比如,可能会有一个指令让计算机重复做某件事情,或者根据某个条件来决定下一步该怎么做。
总之,这段代码是一个示例,帮助我们理解程序是如何工作的,以及我们可以用它来解决问题的方式。
In [1]: inventory = [1, 2, None, None, 5, None]
In [2]: sum(map(bool, inventory))
Out[2]: 3
计算一下有多少个None
,然后从总长度中减去这个数量:
>>> Inventory = [1, 2, None, None, 5, None]
>>> len(Inventory)-Inventory.count(None)
3
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如说,当你在写代码时,可能会发现某个功能没有按照预期工作。这时候,很多人会去网上查找解决方案,比如在StackOverflow上提问或搜索。
StackOverflow是一个程序员交流的平台,大家可以在这里分享自己的问题和解决方案。你可以看到很多人遇到过类似的问题,他们会把自己的经历和解决办法写出来,帮助其他人。
在提问时,最好把你的问题描述得清楚一些,包含你遇到的具体情况、你尝试过的解决方法,以及你希望得到的帮助。这样,其他人才能更好地理解你的问题,并给出有效的建议。
总之,遇到问题时,不要害怕寻求帮助,利用好像StackOverflow这样的资源,可以让你更快地找到解决方案,提升自己的编程技能。
>>> Inventory = [1, 2, None, None, 5, None]
>>> len(filter(None, Inventory))
3
这段代码计算库存中不为None的物品数量,也就是列表中有多少个有效的物品:
len([item for item in Inventory if item is not None])
这段代码则是统计None出现的次数,然后从总长度中减去这个次数:
5 - Inventory.count(None)
>>> 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
表达式,这基本上就是一个匿名函数,我只打算在这个地方用它。