如何比较单个列表和一系列列表?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何比较单个列表和一系列列表?相关的知识,希望对你有一定的参考价值。

来自随机导入randint

def apple(player):

    """Returns a new unoccupied position (tuple). Used to spawn a new `apple` at
    that position.  Microbit LED 5x5"""

    Args:
        player (list of tuples): List of player coordinates

    Returns:
        A new unoccupied position (tuple)

    """
    apple = list((0,0))

    # loop to get each tuple, as list
    for i in range(0, len(player)):
        p = list(player[i])

    dot[0] = randint(0,4)
    dot[1] = randint(0,4)
    x= list (apple)

    if x!= p:
        return tuple((dot))

如果我运行该功能

player = [(0,0), (1,0), (2,0), (3,0), (4,0),
          (0,1), (1,1), (2,1), (3,1), (4,1),
          (0,2), (1,2), (2,2), (3,2), (4,2),
          (0,3), (1,3), (2,3), (3,3), (4,3),
          (0,4), (1,4), (2,4), (3,4),]

它应该给我(4,4),但它不起作用。整个函数忽略了我的不平等陈述:(

答案

如果我理解正确的话,播放器是“你的游戏地图,其中包含当前由物品拍摄的坐标”,你想要找到一个可以种植苹果的空白点。如果有几个可能的点你想随机选择一个

如果这是真的那么这个脚本会这样做:

from operator import itemgetter
import random

def apple(player):
    max_x = max(player, key=itemgetter(0))[0]
    max_y = max(player, key=itemgetter(1))[1]
    candidates = []
    for x in range(max_x + 1):
        for y in range(max_y + 1):
            if (x, y) not in player:
                candidates.append((x,y))
    return random.choice(candidates)

该脚本假设最小坐标是(0,0)并搜索最大坐标本身(如果您事先知道这一点,您可以将两个参数max_xmax_y添加到apple()。然后它只是迭代所有可能的坐标,查看是否有空白点并收集所有在candidates中可能的坐标。然后它随机选择一个坐标并返回。

以上是关于如何比较单个列表和一系列列表?的主要内容,如果未能解决你的问题,请参考以下文章

如何比较另一个列表中的单个项目?

如何在滚动列表视图上显示/隐藏底部导航视图?

如何从片段内的列表视图打开链接网址?

如何使列表视图出现在片段中?

如何将单个元素与集合或列表中的任何元素进行比较[重复]

如何在片段中填充列表视图?