Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.93/569: Рейтинг темы: голосов - 569, средняя оценка - 4.93
3 / 2 / 0
Регистрация: 23.01.2016
Сообщений: 98

Посчитать количество различных элементов в списке

16.03.2016, 20:24. Показов 105070. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дан список. Посчитайте, сколько в нем различных элементов, не изменяя самого списка.

Входные данные
Вводится список чисел. Все числа списка находятся на одной строке.

Выходные данные
Выведите ответ на задачу.

Примеры
входные данные
3 2 1 2 3
выходные данные
3

Помогите пожалуйста решить задачу
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.03.2016, 20:24
Ответы с готовыми решениями:

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

В списке определить минимальный и максимальный элементы, посчитать количество отрицательных элементов
Как гласит задание: В списке целых, заполненном случайными числами, определить минимальный и максимальный элементы, посчитать...

Посчитать, сколько в списке различных элементов, не изменяя самого списка
Дан список. Посчитайте, сколько в нем различных элементов, не изменяя самого списка. входные данные 3 2 1 2 3 выходные данные 3

20
Эксперт по компьютерным сетям
 Аватар для Jabbson
5904 / 3357 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
16.03.2016, 20:33
а что у Вас именно не получается?
1
104 / 94 / 14
Регистрация: 20.06.2010
Сообщений: 966
Записей в блоге: 16
16.03.2016, 20:41
Python Скопировано
1
print (len(set(input("Введите числа через пробел:").split())))
1
3 / 2 / 0
Регистрация: 23.01.2016
Сообщений: 98
17.03.2016, 15:46  [ТС]
В том и загвоздка, что "set" использовать нельзя
0
104 / 94 / 14
Регистрация: 20.06.2010
Сообщений: 966
Записей в блоге: 16
17.03.2016, 16:35
Python Скопировано
1
2
3
4
5
6
7
8
array = input("Введите список через пробел").split()
count = 0
unique_array = []
for x in array:
    if x not in unique_array:
        count += 1
        unique_array.append(x)
print(len(unique_array))
1
Эксперт NIX
 Аватар для Marinero
2795 / 2038 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
17.03.2016, 17:23
bodrich, Чем второй вариант отличается от первого? Более сложным созданием множества?
Python Скопировано
1
2
3
4
5
6
7
8
my_array = input("Введите список через пробел").split()
count = 0
for i in range(len(my_array)):
    try:
        my_array.index(my_array[i], i + 1):
    except ValueError:
        count += 1
print(count)
1
104 / 94 / 14
Регистрация: 20.06.2010
Сообщений: 966
Записей в блоге: 16
18.03.2016, 16:21
Цитата Сообщение от Marinero Посмотреть сообщение
bodrich, Чем второй вариант отличается от первого? Более сложным созданием множества?
set нельзя использовать
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
18.03.2016, 16:57
Python Скопировано
1
2
3
4
5
6
a=[input() for k in range(int(input("Введите количество чисел!")))]
for k in a:
    b[n]=k
    while b[n] in a:
        a.remove(b[n])
    n+=1
Добавлено через 2 минуты
Этот вариант подходит только когда я изменяю начальный список. Честно, можно создать копию начального списка и начальный удалить. Следовательно, я уже начальный изменить не смогу - его не будет существовать.

Добавлено через 2 минуты
Python Скопировано
1
2
3
4
5
6
7
8
c=[input() for k in range(int(input("Введите количество чисел!")))]
a=list(c)
c.clear()
for k in a:
    b[n]=k
    while b[n] in a:
        a.remove(b[n])
    n+=1
0
0 / 0 / 0
Регистрация: 25.10.2016
Сообщений: 5
25.10.2016, 23:13
Добрый вечер!

Пожалуйста, помогите найти ошибку в коде.
Задача:
Write a program that will generate 1000 numbers, each between 0 and 99. Keep a count of how often each number is generated, and at the end of the run print out the counts. For example, you might get this output (it's unlikely, but you might):

0 was generated 100 times
5 was generated 700 times
62 was generated 200 times

Notes: this program is different to the others -- the numbers you are generating should be used -- as indices into the list, not as values to be stored in the list. Array position 0 should store the count of zeros generated, and so on. You'll have to set up a list containing enough positions before you start storing the data.
У меня получился код:

Python Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import random
list = [int(random.randint(0,100))]
mylist = []
x = [random.randint(0,100)]
count=1
for x in range(0,100):
    mylist.append(x)
while count<1000:
    list.append(x)
else:
 count==1000
 break
 
print(list.count(x))
0
Заблокирован
26.10.2016, 01:19
'В том и загвоздка, что "set" использовать нельзя'
Можно обмануть систему и юзнуть dict.)
Python Скопировано
1
print (len({elem:elem for elem in input("Введите числа через пробел:").split()}))
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
26.10.2016, 01:41
Цитата Сообщение от blackl185 Посмотреть сообщение
Добрый вечер!

Пожалуйста, помогите найти ошибку в коде.
Нет отступов
1
0 / 0 / 0
Регистрация: 25.10.2016
Сообщений: 5
26.10.2016, 02:21
Спасибо!
Исправила:
Python Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import random
 
arr = [0]
#element
x=int(random.randint(0,100))
 
#list
list = [x]
 
 
#loop1 counting
for i in range(0,100):
    a = list.count(list)
print(x,"was generated",a,"times")
Но все равно выдает неверный ответ:
75 was generated 0 times
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
26.10.2016, 03:06
list - зарезервированное слово в python, не рекомендуется его использовать в качестве имени для переменной


Python Скопировано
1
2
3
4
5
6
7
8
9
import random
 
list1 = [random.randint(0,99) for _ in range(1000)]
s=set(list1)
 
#loop1 counting
for i in s:
    a = list1.count(i)
    print(i,"was generated",a,"times")
Добавлено через 34 минуты
Вообще, по условию, нужно составить список, в котором индексами являются сгенерированные числа, поэтому должно быть как-то так:
Python Скопировано
1
2
3
4
5
6
7
8
import random
 
list1 = [0]*100
for i in range(1000):
    list1[random.randint(0,99)]+=1
 
for i in range(100):
    print(i,"was generated",list1[i],"times")
1
0 / 0 / 0
Регистрация: 25.10.2016
Сообщений: 5
26.10.2016, 03:25
Спасибо огромное!
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
26.10.2016, 03:38
Цитата Сообщение от blackl185 Посмотреть сообщение
Спасибо огромное!
Lab 6?
1
0 / 0 / 0
Регистрация: 25.10.2016
Сообщений: 5
28.10.2016, 20:08
Да, это она, спасибо!

Извините, но у меня еще один вопрос.

Я написала функцию для вычисления среднего арифметического из списка, состоящего из 50 чисел, которые входят в список рандомных чисел от 1 до 100.

Есть ли способ проделать ту же операцию, но с кодом покороче?

Python Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import random
 
 
def problem2(number):
    my_random= list()
    my_random2 = list()
    for x in range(0, number):
        number = random.randint(1, 100)
        my_random.insert(x, number)
 
    if len(my_random) < 50:
 
        for x in range(number + 1, 51):
            number = random.randint(1, 100)
            my_random.insert(x, number)
 
 
    elif len(my_random) >= 50:
 
        for i in range(0, 50):
            my_random2.insert(p, random.choice(my_random))
 
    if len(my_random2) != 0:
        average = sum(my_random2) / len(my_random2)
    else:
        average = sum(my_random) / len(my_random)
    return average
 
 
random_int = random.randint(1, 100)
average = problem2(random_int)
print("The average is:", average)
0
12 / 12 / 10
Регистрация: 17.06.2016
Сообщений: 70
28.10.2016, 22:01
Отступи сделайте,и код берите в теги для питона
""

Добавлено через 2 минуты
Ввели список а дальше просто
Python Скопировано
1
2
3
4
summ=0
for in in range(len(ваш список)):
    summ+=int(ваш список[i])
print(summ/len(ваш список))
1
0 / 0 / 0
Регистрация: 25.10.2016
Сообщений: 5
29.10.2016, 13:51
Спасибо большое!

Но мне кажется, не совсем то.
Условие задачи вот так выглядело:
Write a function that will take a single parameter of an integer, and return a list of that many random numbers between 1 and 100.

Using this function, write a program that will store 50 random numbers in a list, and then calculate and print out the average of all the numbers.

Спасибо большое!
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
30.10.2016, 11:43
Python Скопировано
1
2
3
4
5
6
7
import random
 
def f(n):
 return [random.randint(1,99) for _ in range(n)]
 
l = f(50)
print (sum(l)/float(len(l)))
0
0 / 0 / 0
Регистрация: 17.11.2022
Сообщений: 2
17.11.2022, 19:15
Жутко, но так тоже можно
Там еще вот такая приписочка есть:
Вводится список чисел. Все числа списка находятся на одной строке. Все числа целые неотрицательные и не больше 1000.
Python Скопировано
1
2
3
4
5
6
s = list(map(int, input().split()))
count=0
for i in range(1000):
    if i in s:
        count+=1
print(count)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.11.2022, 19:15
Помогаю со студенческими работами здесь

Посчитать количество различных элементов в массиве
Дан линейный массив целых чисел ввести с клавиатуры не менее 10 элементов и посчитать сколько в нем различных чисел . помогите решить ...

Посчитать количество различных элементов массива
Собственно задача обозначена в заглавии темы. НЕ могу понять что неправильно в моем говнокоде (постоянно вывадит 100). Подскажите пожалста...

Посчитать в списке количество положительных и отрицательных элементов
Написать программу, которая вводит с клавиатуры список вещественных чисел, подсчитывает количество положительных и отрицательных элементов...

Посчитать количество атомов в многоуровневом списке (в списке со вложенными списками)
Здравствуйте! Нужно написать программу, которая бы вычисляла, сколько всего атомов в списке (списочной структуре), в том числе во...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Рекурсивные типы в Python
py-thonny 07.04.2025
Рекурсивные типы - это типы данных, которые определяются через самих себя или в сочетании с другими типами, которые в свою очередь ссылаются на исходный тип. В мире программирования такие структуры. . .
C++26: Объединение и конкатенация последовательностей и диапазонов в std::ranges
NullReferenced 07.04.2025
Работа с последовательностями данных – одна из фундаментальных задач, с которой сталкивается каждый разработчик. C++ прошел длинный путь в эволюции средств для манипуляции коллекциями – от. . .
Обмен данными в микросервисной архитектуре
ArchitectMsa 06.04.2025
Когда разработчики начинают погружаться в мир микросервисов, они часто сталкиваются с парадоксальным правилом: "два сервиса не должны делить один источник данных". Эта мантра звучит повсюду в. . .
PostgreSQL в Kubernetes: Автоматизация обслуживания с CNPG
Mr. Docker 06.04.2025
Администраторы баз данных сталкиваются с целым рядом проблем при обслуживании PostgreSQL в Kubernetes: как обеспечить правильную репликацию данных, как настроить автоматическое переключение при. . .
Async/await в TypeScript
run.dev 06.04.2025
Асинхронное программирование — это подход к разработке программного обеспечения, при котором операции выполняются независимо друг от друга. В отличие от синхронного выполнения, где каждая последующая. . .
Многопоточность в C#: Синхронизация потоков
UnmanagedCoder 06.04.2025
Многопоточное программирование стало неотъемлемой частью разработки современных приложений на C#. С появлением многоядерных процессоров возможность выполнять несколько задач параллельно значительно. . .
TypeScript: Классы и конструкторы
run.dev 06.04.2025
TypeScript, как статически типизированный язык, построенный на основе JavaScript, привнес в веб-разработку новый уровень надежности и структурированности кода. Одним из важнейших элементов этой. . .
Многопоточное программирование: Rust против C++
golander 06.04.2025
C++ существует уже несколько десятилетий и его поддержка параллелизма постепенно наращивалась со временем. Начиная с C++11, язык получил стандартную библиотеку для работы с потоками, а в последующих. . .
std::vector в C++: от основ к оптимизации производительности
NullReferenced 05.04.2025
Для многих программистов знакомство с std::vector происходит на ранних этапах изучения языка, но между базовым пониманием и подлинным мастерством лежит огромная дистанция. Контейнер std::vector. . .
Реляционная модель и правила Кодда: фундамент современных баз данных
Codd 05.04.2025
Конец 1960-х — начало 1970-х годов был периодом глубоких трансформаций в области хранения и обработки данных. На фоне растущих потребностей бизнеса и правительственных структур существовавшие на тот. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер