首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在列表中查找多米诺骨牌的索引

如何在列表中查找多米诺骨牌的索引
EN

Stack Overflow用户
提问于 2018-03-27 14:18:28
回答 4查看 181关注 0票数 1

我有一个包含多米诺骨牌的列表(也是两个整数的列表),我需要找到其中一个多米诺骨牌的索引。

示例:

代码语言:javascript
复制
list_of_hand = [[[2, 5], [5, 5], [6, 5], [6, 4]], [[3, 2], [4, 5], [4, 4], [6, 1]]]

这个列表是两个列表,包括玩家手中的所有多米诺骨牌。

如何找到domino [6, 5]的索引?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-03-27 14:23:08

您可以使用一个简单的函数搜索子列表:

代码语言:javascript
复制
x = [[[2, 5], [5, 5], [6, 5], [6, 4]], [[3, 2], [4, 5], [4, 4], [6, 1]]]

def hand_search(L, domino):
    for s in L:
        if domino in s:
            return (L.index(s), s.index(domino))
    return -1

print(hand_search(x, [6,5]))
print(hand_search(x, [6,1]))

输出:

代码语言:javascript
复制
(0, 2)    # 0 is the player, 2 is the position in their hand
(1, 3)    # 1 is the player, 3 is the position in their hand

只要嵌套是相同的,这就可以扩展到任意多的玩家。

票数 1
EN

Stack Overflow用户

发布于 2018-03-27 14:27:51

一种方法是在这样的循环中使用enumerate(PEP 279)函数:

代码语言:javascript
复制
def search(l,domino):
    for m,i in enumerate(l):
        for n,j in enumerate(i):
            if domino == j:
                return(m,n)
    return("No match.")

>>> search(list_of_hand,[6,5])
(0, 2)
票数 1
EN

Stack Overflow用户

发布于 2018-03-27 15:37:46

或者,您可以将所有内容保存在字典中:

代码语言:javascript
复制
dominos, hands = {}, {}

def give(d, h):
    hands.setdefault(h, []).append(d)
    dominos.update({d:h})

give( (6,5), 1 )
give( (2,5), 1 )
give( (3,2), 2 )
give( (5,5), 2 )

print hands             # {1: [(6, 5), (2, 5)], 2: [(3, 2), (5, 5)]}
print dominos           # {(2, 5): 1, (3, 2): 2, (6, 5): 1, (5, 5): 2}
print hands[2]          # [(3, 2), (5, 5)]
print dominos[(6,5)]    # 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49515359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档