在Python中创建嵌套列表

时间:2017-05-03 14:20:10

标签: python list nested

这就是问题:

“编写一个函数, find_all(L,i),它采用嵌套列表 L 和项目 i 并打印 L i 所有出现的索引。

什么:

from string import *
def find_all(L,i):
    for sub_list in L:
        if i in sub_list:
            return (L.index(sub_list), sub_list.index(i))
print find_all([[1,2,3],[4,5],[6],[5,13]], 5)

输出仅为(1,1)。

4 个答案:

答案 0 :(得分:1)

ll = [[1,2,3],[4,5],[6],[5,13]]

def find_all(ll,num):
  for index_inner,inner_list in enumerate(ll):
    for index,item in enumerate(inner_list):
      if item == num:
        print('List :',inner_list,'List Index :',index_inner, 'Index :' ,index)

find_all(ll,5)  

RESULT

List : [4, 5] List Index : 1 Index : 1
List : [5, 13] List Index : 3 Index : 0

答案 1 :(得分:0)

您应该使用yield而不是返回。 Yield返回一个生成器表达式,然后可以将其转换为list

def find_all(L,i):
    for sub_list in L:
        if i in sub_list:
            yield (L.index(sub_list), sub_list.index(i))
print list(find_all([[1,2,3],[4,5],[6],[5,13]], 5))

或者,如果要在默认情况下返回列表,请定义临时返回列表。

def find_all(L,i):
    returnLi = []
    for sub_list in L:
        if i in sub_list:
            returnLi.append((L.index(sub_list), sub_list.index(i)))
    return returnLi
print find_all([[1,2,3],[4,5],[6],[5,13]], 5)

最后,如果您不需要列表或不想使用收益率,您只需打印出结果即可:

def find_all(L,i):
    for sub_list in L:
        if i in sub_list:
            print((L.index(sub_list), sub_list.index(i)))
find_all([[1,2,3],[4,5],[6],[5,13]], 5)

答案 2 :(得分:0)

由于你正在使用return,它会在找到第一个结果而不是继续之后终止程序,所以这样做:

def find_all(mylist, char):
    for sub_list in mylist:
        if char in sub_list:
            print ("({},{})".format(mylist.index(sub_list),sub_list.index(char)))

find_all([[1,2,3],[4,5],[6],[5,13]], 5)

输出:

(1 ,1)
(3, 0)

答案 3 :(得分:0)

if i in sub_list:满足时,你循环中的返回函数立即退出循环。

要打印所有这些,只需创建一个临时变量作为列表来存储数据,如下所示:

from string import *
temp = []
def find_all(L,i):
    for sub_list in L:
        if i in sub_list:
            temp.append([L.index(sub_list), sub_list.index(i)])
    return temp