使用两个或两个或三个元素搜索子列表的两个元素

时间:2013-10-03 03:01:31

标签: python list sublist

我正在尝试编写代码,以便搜索将返回任何子列表,其中搜索的两个元素都是列表的前两个元素。基本上我想要,如果我有

data = [[4,3,0],[4,7], [6,3], [9,2], [4,3]]
search = 4,3

返回

there [4,3,0]
there [4,3]

目前,我有

search = [4,3]
data = [[4,3,0],[4,7], [6,3], [9,2], [4,3]]
if search in data:
    print("there", search)
else:
    print("not there")

但这只会返回

there [4,3]

编辑:我还需要能够附加包含搜索的子列表。

感谢您的帮助。 干杯! 5813

3 个答案:

答案 0 :(得分:2)

我最终使用了alok方法的修改版本,我将“d”替换为“子列表”,以便稍后打印并附加它。谢谢你的帮助!

search = [4,3]
data = [[4,3,0],[4,7], [6,3], [9,2], [4,3]]

for sublist in data:
    if search == sublist[:len(search)]:
        sublist.append("c")
        print("there", sublist)

完全返回我想要的内容:

there [4,3,0,'c']
there [4,3,'c']

答案 1 :(得分:1)

使用for循环遍历每个子列表和Python数组切片,只比较您正在搜索的列表中的前两项。

search = [4,3]
data = [[4,3,0],[4,7], [6,3], [9,2], [4,3]]

for d in data:
    if search == d[:len(search)]:
        print("there", search)
    else:
        print("not there")

答案 2 :(得分:1)

其中一个解决方案是:

search = [4,3]
data = [[4,3,0],[4,7], [6,3], [9,2], [4,3]]    
sublist = []

flag = False
for x in data:
    flag = True
    for v in search:
        if v not in x:
            flag = False
            break
    if flag:
        sublist.append(x)

print "sublist : ", sublist