【问题标题】:Fixing return format for my function修复我的函数的返回格式
【发布时间】:2016-10-09 16:23:02
【问题描述】:

我的函数的代码可以正常工作,但它没有以我想要的格式返回函数。该函数在第二个序列中计算种子值,然后应该将种子计数作为整数列表返回。它返回种子计数,但在单独的行上而不是在列表中。这是我的代码以及它在命令提示符中返回的内容。

    def count_each(seeds,xs):
        for c in seeds:
            count=0
        for d in xs:
            if c==d:
                count=count+1
        print ([count])

count_each([10,20],[10,20,30,10])

count_each([4,8],[1,2,4,4,4,8,8,10])

在命令提示符下,我希望此函数为 count_each([10,20],[10,20,30,10]) 打印 [2,1],为 count_each([4, 8],[1,2,4,4,4,8,8,10]) 而是像这样在自己的行上打印每个种子值

http://i.stack.imgur.com/vXAd3.png

在上图中,它在单独的行上打印 [2]、[1]、[3] 和 [2],而应该只打印两行 [2,1] 和 [3,2]两个序列。如何让函数将每个序列的种子值作为列表返回,而不是将值放在单独的行上。

编辑:我需要在不从其他模块导入的情况下使用最简单的代码来完成此操作。

【问题讨论】:

    标签: python list format sequence


    【解决方案1】:

    你差不多完成了,但是如果你想在一个列表中打印输出,你必须先创建一个列表。在这里,试试这个:

    def count_each(seeds,xs):
        output = []
        for c in seeds:
            count=0
            for d in xs:
                if c==d:
                    count=count+1
            output.append(count)
        print (output)
    

    【讨论】:

    • 非常感谢这个解决方案完美运行。另一个答案希望我使用完全不同的代码,但您保留了我的大部分原始代码。
    • @famguy74 很高兴我提供了帮助,但如果您想学习 Python 语言,您应该尝试探索 Python 模块。
    【解决方案2】:

    我认为您的代码不起作用。试试这个:

    def count_each(seeds,xs):
        from collections import Counter
        counter_dict = dict(Counter(xs))
        count = []
        for s in seeds:
            count.append(counter_dict[s])
        print count
    
    if __name__ == "__main__":
        count_each([10,20],[10,20,30,10])
        count_each([4,8],[1,2,4,4,4,8,8,10])
    

    基本上,Counter 为您提供列表中每个唯一元素的计数。

    更新:

    刚刚为 Python 的 list 找到了一个 count 方法。代码如下:

    def count_each(seeds,xs):
        from collections import Counter
        count = []
        for s in seeds:
            count.append(xs.count(s))
        print count
    

    【讨论】:

    • 我的代码确实有效,我附上了一张在命令提示符下运行的照片。我需要在不从其他模块导入的情况下完成此操作,必须有一种更简单的方法将这些值打印为列表而不是单个值
    • 不,它没有。我复制了你的代码并尝试了。它分别给了我 [1] 和 [2]。如果您查看您的代码,您会发现您的 count 变量是一个整数而不是一个列表。即使你做[count],它仍然是一个单元素列表。另外,collections 是一个内置包。请参阅我对 list 对象的 count 方法的更新。
    • 如果您将 count_each([10,20],[10,20,30,10]) 添加到我的代码末尾,您可以看到它确实返回 [2] 和 [1]它应该是,但我只是希望它以 [2,1] 的形式返回,因为它们是同一序列的一部分。进口计数器真的是唯一的方法吗?必须有一种方法来修改循环和计数值,使其返回序列列表而不是单独的整数
    • 我不确定你在说什么。您的代码不返回列表,这是您想要实现的。请参阅我的未导入更新。
    猜你喜欢
    • 2021-10-11
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    相关资源
    最近更新 更多