2016-10-09 3 views
1

Код для моей функции работает правильно, но он не возвращает функцию в формате, который я хотел бы. Функция подсчитывает значения семян во второй последовательности и затем должна возвращать подсчет семян в виде списка целых чисел. Он возвращает количество семян, но на отдельных строках, а не в списке. Вот мой код и его возвращение в командной строке.Фиксация формата возврата для моей функции

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])

В командной строке я хотел бы, чтобы эта функция печатала [2,1] для count_each ([10,20], [10,20,30,10]) и [3,2] для 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] для двух последовательностей , Как я могу заставить функцию возвращать начальные значения для каждой последовательности в виде списка вместо того, чтобы иметь значения в отдельных строках.

Редактировать: Мне нужно выполнить это без импорта из других модулей и с помощью простейшего кода.

ответ

2

Вы почти закончили, но если вы хотите, чтобы напечатать вывод в списке, вы должны сначала создать list.Here, попробуйте следующее:

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) 
+1

Большое вам спасибо, что это решение работает отлично. Другой ответ хотел, чтобы я использовал совершенно другой код, но вы сохранили большую часть своего исходного кода в такт. – famguy74

+0

@ famguy74 Я рад, что помог, но вы должны попробовать изучить модули python, если хотите изучить язык. – theVoid

0

Я думаю, что ваш код не работает. Попробуйте это:

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 дает отсчет для каждого уникального элемента в списке.

Update:

Просто нашел метод count для языка Python list. Код выглядит следующим образом:

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

код I у меня есть работа, я включил фотографию ее в командной строке. Мне нужно выполнить это без импорта из других модулей, должен быть простой способ просто распечатать эти значения в виде списка вместо отдельных значений. – famguy74

+0

Нет, это не так. Я скопировал ваш код и попробовал. Это дало мне [1] и [2] соответственно. Если вы посмотрите на свой код, вы увидите, что ваша переменная 'count' представляет собой целое число, а не список. Даже если вы выполняете '[count]', это все еще одноэлементный список. Кроме того, 'сборники '- это встроенный пакет. См. Мое обновление для метода 'count' объектов' list'. – Zhiya

+0

, если вы добавите count_each ([10,20], [10,20,30,10]) в конец моего кода, вы можете увидеть, что он возвращает [2] и [1], который он должен был, но я бы просто например, возвращаться как [2,1], поскольку они являются частью одной и той же последовательности. Действительно ли импортный счетчик является единственным способом сделать это? Должен быть способ пересмотреть цикл и значение count, чтобы он возвращал списки последовательности вместо отдельных целых чисел. – famguy74

Смежные вопросы