Python 2.7.13如何在多个字符串/列表中查找单词?

时间:2017-04-10 09:48:32

标签: python

如果单词在列表中,我需要执行命令;

arrangement_01 = [['Block A', 'Bottom left', 'Up', 'O']]

arrangement_02 = [['Block B', 'Bottom right', 'Up', 'O']]

arrangement_03 = [['Block C', 'Bottom left', 'Up', 'O']]

arrangement_04 = [['Block D', 'Bottom right', 'Up', 'O']]

arrangement_52 = [['Block B', 'Bottom left', 'Down', 'O'],
              ['Block A', 'Bottom right', 'Left', 'O'],
              ['Block D', 'Top left', 'Right', 'O'],
              ['Block C', 'Top right', 'Up', 'X']]

如果' A座'有任何安排(如上所列) 如何定义函数以便执行命令?例如;

def stack_blocks(arrangement?)
    if 'Block A' in anyarrangement
    draw_blocka()

stack_blocks(arrangement_01)

(我知道这是错的,但有任何想法吗?)

对不起,如果我没有解释清楚。

4 个答案:

答案 0 :(得分:0)

如果你想测试某个特定区块是否存在于任何"安排"中,你可以先提取所有这些区块,将其保存为一组,然后使用该组进行测试:

from itertools import chain

arrangement_01 = [['Block A', 'Bottom left', 'Up', 'O']]

arrangement_02 = [['Block B', 'Bottom right', 'Up', 'O']]

arrangement_03 = [['Block C', 'Bottom left', 'Up', 'O']]

arrangement_04 = [['Block D', 'Bottom right', 'Up', 'O']]

arrangement_52 = [['Block B', 'Bottom left', 'Down', 'O'],
               ['Block A', 'Bottom right', 'Left', 'O'],
               ['Block D', 'Top left', 'Right', 'O'],
               ['Block C', 'Top right', 'Up', 'X']]

omega = set([])
for L in chain(arrangement_01, arrangement_02, arrangement_03 , arrangement_04, arrangement_52):
    omega.add(L[0])

if 'Block A' in omega:
    print('Block A is present in some of the arrangements')

答案 1 :(得分:0)

在检查特定单词是否存在之前展平您的安排。

arrangement = [word for item in arrangement for word in item]

答案 2 :(得分:0)

此处您的功能略有修改:

def stack_blocks(arrangement, checkval)
    Ret checkval in  
        [elem for sublist in  arrangement for elem in sublist]

Stack_blocks(arrangement1, "Block A")
# returns true

答案 3 :(得分:0)

这应该可以解决问题:

arrangement_01 = [['Block A', 'Bottom left', 'Up', 'O']]

arrangement_02 = [['Block B', 'Bottom right', 'Up', 'O']]

arrangement_03 = [['Block C', 'Bottom left', 'Up', 'O']]

arrangement_04 = [['Block D', 'Bottom right', 'Up', 'O']]

arrangement_52 = [['Block B', 'Bottom left', 'Down', 'O'],
              ['Block A', 'Bottom right', 'Left', 'O'],
              ['Block D', 'Top left', 'Right', 'O'],
              ['Block C', 'Top right', 'Up', 'X']]


def stack_blocks(arrangement):
    for item in arrangement:
        if 'Block A' in item:
            print "its there"

for value in vars().values():
    if isinstance(value, list):
        stack_blocks(value);

你在这里做的是你定义了所有变量,然后检查它们的值是否包含一个列表:

if isinstance(value, list):

如果计算结果为true,我们将变量值传递给您可以实现逻辑的函数。

希望这会有所帮助。