2016-10-09 7 views
0

Если для функции задана последовательность начальных значений seeds, для каждого отдельного начального значения необходимо подсчитывать количество раз, которое они отображаются во второй последовательности xs. Затем он должен возвращать counts как список целых чисел в том же порядке, что и начальные значения. Если 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 
+0

Возможный дубликат [Как подсчитать частоту элементов в списке?] (Http://stackoverflow.com/questions/2161752/how -to-count-the-the-the-the-elements-in-a-list) – Julien

ответ

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') 
+0

Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (http://meta.stackexchange.com/questions/114762/explaining-whole-code-based-answers) действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. – andreas

+0

Каковы c и d равны? Это кажется лучшим ответом, но когда я проверяю функцию, он либо возвращает 1, либо ни один, а не сколько раз значение семени появляется во второй последовательности. – famguy74

+0

c - переменная, которая удерживает символы в семенах для первого цикла for, а d имеет место символы формируют xs для второго 'для цикла', а затем мы сравниваем это 'c == d', если оно истинно, тогда увеличиваем счетчик на 1. –

2

Я не могу понять, как именно я бы подсчитать количество исходных значений во второй последовательности, а не просто проверить, существует ли значение.

У последовательности Python есть удобный метод .count.

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

Заканчивать collections.Counter()

import collections 

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