【问题标题】:Counting seed values from first sequence in second sequence在第二个序列中计算来自第一个序列的种子值
【发布时间】:2017-02-17 20:15:34
【问题描述】:

如果给函数一个种子值序列seeds,它需要计算每个种子值在第二个序列xs 中出现的次数。然后它应该以与种子值相同的顺序将计数作为整数列表返回。如果seeds 包含重复值,则在返回的列表中保留重复计数。例如,count_each([10,20],[10,20,50,20,40,20]) 应该返回 [1,3]count_each('aeiou','encyclopedia') should return [1,2,1,1,0]

我被困在如何编程这个功能上。这是我到目前为止所拥有的,但我无法弄清楚我将如何准确计算第二个序列中种子值的数量,而不仅仅是检查这些值是否存在。对此的任何帮助将不胜感激。

def count_each(seeds,xs):   

    if seeds in xs:
        if seeds == True
    return seeds
        elif seeds == False
    return None

【问题讨论】:

标签: python sequence counting seed


【解决方案1】:
def count_letter(seeds,xs):
    for c in seeds:
        count=0
        for d in xs:
            if c==d:
                count=count+1
        print (c,"Occured ",count,"times")

count_letter([10,20],[10,20,30,10])
count_letter('aeiou','encyclopedia')

【讨论】:

  • 虽然这段代码 sn-p 可以解决问题,including an explanation 确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
  • c 和 d 等于什么?这似乎是最好的答案,但是当我测试函数时,它要么返回 1,要么返回无,而不是种子值出现在第二个序列中的次数
  • c 是一个变量,它为第一个'for循环'保存种子中的字符,d 为第二个'for循环'保存xs中的字符,然后我们比较这个'c==d',如果它为真,然后将计数器增加 1。
  • 感谢您的解释,我在命令提示符下测试了您的解决方案,并且可以确认它有效,但是我必须对其进行调整才能返回种子值而不是打印它们
  • 您找到解决方案了吗? :)
【解决方案2】:

查看collections.Counter()

import collections

def count_each(seeds,xs): 
    c = collections.Counter(xs)
    return [c[seed] for seed in seeds]

【讨论】:

    【解决方案3】:

    我不知道如何准确计算第二个序列中种子值的数量,而不仅仅是检查这些值是否存在。

    Python 序列有一个方便的.count 方法。

    >>> [1,1,1,2,3,4,5].count(1)
    3
    >>> "ababababcdefg".count("b")
    4
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-04
      • 2015-12-06
      • 1970-01-01
      • 1970-01-01
      • 2013-12-05
      相关资源
      最近更新 更多