从列表

时间:2015-11-22 18:54:47

标签: python list python-3.x count return

我的程序需要帮助。我是python的新手,所以我遇到了这个问题。

我有2d列表库= [[25.0,1,100.5,4,320.5],[125.0,2,40.0,3,85.0],[175.0,0,125.0,3,75.0],[75.0,0] ,125.0],[181.0,2,125.0]]

我想知道是否有办法可以使用return语句获取每个子列表的计数。 e.g:

银行0,银行1,银行2,银行3,银行4

def bank_id(banks):
    '''list - > int, returns the banks id number
    '''

    for item in range(len(banks)):
        bankid = item
        return (bankid)

输出:

>>> bank_id(banks)
0

但是当我使用print(bankid)时,我得到了我想要的结果:

>>> bank_id(banks)
0
1
2
3
4

但是我不能使用打印,因为我需要为下一个打电话给这个功能,如果我使用打印它将会出现'没有'而不是实际值。

谢谢

4 个答案:

答案 0 :(得分:1)

你应该迭代外部列表并在元素上调用len

[len(x) for x in banks]

但我担心我不明白你的任务

答案 1 :(得分:0)

您只打印一次的原因是当您return突然离开时。

听起来你可能需要重新组织你的代码,如果你需要调用这个函数,但不需要这部分功能:也许这部分功能是它自己的功能。拥有许多单独的功能(通常每行只有15行代码)可以完全正常,而且通常要好得多。打破这一点可能会提高代码可用性的可读性。

def print_bank_ids(banks):
    for item in range(len(banks)):
        bankid = item
        print (bankid)

答案 2 :(得分:0)

如果我正确理解了您想要的内容,您可以迭代列表并将结果插入新列表,然后打印该列表:

def bank_id(banks):
    bank_ids_list = []
    for bank_id in range(len(banks)):
        bank_ids_list.append('Bank '+str(bank_id))
    return bank_ids_list

banks = [[25.0, 1, 100.5, 4, 320.5], [125.0, 2, 40.0, 3, 85.0], [175.0, 0, 125.0, 3, 75.0], [75.0, 0, 125.0], [181.0, 2, 125.0]]

print bank_id(banks)

输出:

['Bank 0', 'Bank 1', 'Bank 2', 'Bank 3', 'Bank 4']

答案 3 :(得分:0)

假设:

banks=[[25.0, 1, 100.5, 4, 320.5], [125.0, 2, 40.0, 3, 85.0], [175.0, 0, 125.0, 3, 75.0], [75.0, 0, 125.0], [181.0, 2, 125.0]]

如果我理解,你想枚举列表列表并返回长度:

>>> [('Bank {}'.format(i), len(e)) for i, e in enumerate(banks)]
[('Bank 0', 5), ('Bank 1', 5), ('Bank 2', 5), ('Bank 3', 3), ('Bank 4', 3)]

这可能更适合作为元组的词典:

>>> {i:('Bank {}'.format(i), len(e), e) for i, e in enumerate(banks)}
{0: ('Bank 0', 5, [25.0, 1, 100.5, 4, 320.5]), 1: ('Bank 1', 5, [125.0, 2, 40.0, 3, 85.0]), 2: ('Bank 2', 5, [175.0, 0, 125.0, 3, 75.0]), 3: ('Bank 3', 3, [75.0, 0, 125.0]), 4: ('Bank 4', 3, [181.0, 2, 125.0])}