Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 15, 2011 14:34:41

Viskas
От:
Зарегистрирован: 2011-11-15
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Нубский вопрос по массивам

Ребят, дико стыдно, но только только начал изучать python. Делаю задачки для закрепления теории.
Сам вопрос такой: ‘Вводится размер одномерного массива A(N) и его элементы. Удалить из исходного массива все элементы, являющиеся простыми числами. Результат вывести на экран.’

Не могу сформулировать и написать условие выборки всех составных чисел массива

# -*- coding: cp1251 -*-

n = int(input('Введите длину массива: ')) # Вводим длину массива
massiv = [] # Создаем массив

for i in range(n):
x = input('Введите элементы массива: ' ) # Вводим элементы массива
massiv.append(x)
print('%30s' % 'Заданный массив:', massiv) # Вывод заданного массива
Дальше в заданном массиве мне надо сделать выборку, вот тут то я и туплю.
Если кому будет не сложно, помогите пожалуйста )



Офлайн

#2 Ноя. 15, 2011 17:38:06

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Нубский вопрос по массивам

def prime(i):
.....
print [i for i in massiv if not prime(i)]
но это несколько сомнительно по производительности и это не удаление из исходного массива а создание нового массива.
Удалять из исходного - несколько сложновато и менее эффективно наверное.



Офлайн

#3 Ноя. 15, 2011 18:36:36

Viskas
От:
Зарегистрирован: 2011-11-15
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Нубский вопрос по массивам

doza_and
Удалять из исходного - несколько сложновато и менее эффективно наверное.
в принципе да, легче сделать выборку всех составных чисел в массиве и добавить их в новый массив ,а старый удалить.



Офлайн

#4 Ноя. 15, 2011 18:38:17

Viskas
От:
Зарегистрирован: 2011-11-15
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Нубский вопрос по массивам

doza_and
Код:

def prime(i):
…..
print
Я правильно понял, что в функции описываю все целые элементы массива ,а потом вывожу все составные?



Офлайн

#5 Ноя. 15, 2011 18:44:12

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Нубский вопрос по массивам

Эта функция должна давать True для простых чисел. и False в противном случае. Можно сделать проверку делимости на все числа меньше sqrt(n) и накапливать уже известные протсые числа в множестве. Ну как вариант.



Офлайн

#6 Ноя. 15, 2011 19:07:47

Viskas
От:
Зарегистрирован: 2011-11-15
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Нубский вопрос по массивам

doza_and
Эта функция должна давать True для простых чисел. и False  в противном случае. Можно сделать проверку делимости на все числа меньше sqrt(n) и накапливать уже известные протсые числа в множестве. Ну как вариант.
Да, в этом направлении я и думал. Спасибо



Офлайн

#7 Ноя. 16, 2011 06:35:11

Viskas
От:
Зарегистрирован: 2011-11-15
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Нубский вопрос по массивам

doza_and
print
-*- coding: cp1251 -*-

n = int(input('Введите длину массива: ')) # Вводим длину массива
massiv = # Создаем массив
for i in range(n):
x = input('Введите элементы массива: ‘ ) # Вводим элементы массива
massiv.append(x)
print(’%30s' % ‘Заданный массив:’, massiv) # Вывод заданного массива


def prime(i):
prime =
prime = 0
for i in range(0, n):
if prime != 0:
for j in range(i + prime, n, prime):
prime = 0
return
print('sost:', )
что то выдает пустой массив (



Отредактировано (Ноя. 16, 2011 07:17:14)

Офлайн

#8 Ноя. 16, 2011 07:39:23

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Нубский вопрос по массивам

massiv = list(range(10))
print massiv
def prime(i):
if i < 2:
return False

for x in range(2, i):
if not i%x:
return False
return True

print('sost:', [i for i in massiv if not prime(i)])
print('prost:', [i for i in massiv if prime(i)])
слишком много вычислений,код будет неправильный



Офлайн

#9 Ноя. 16, 2011 07:55:25

Viskas
От:
Зарегистрирован: 2011-11-15
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Нубский вопрос по массивам

Спасибо большое sp3!!
Я вообще оказывается не в ту степь ушел (хотя уже был близок к тому, что бы переписать функцию дли использования boolean)



Офлайн

#10 Ноя. 21, 2011 10:33:32

Viskas
От:
Зарегистрирован: 2011-11-15
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Нубский вопрос по массивам

Ребят ,еще один глупый вопрос:
Как мне в двумерном массиве a(n*m) с индексами элементов (i, j) вывести только номера строк удовлетворяющих заданным условиям?
Уточню вопрос:
создаю двумерный массив a из n строк и m столбцов с индексами элементов i и j. Не могу понять как мне вывести, например, номер строки. Если использовать enumerate, то выводится и номер столбца (да и не то это - это скорее для надо для элементов).
Конкретизирую: строка n1 массива а, содержит данные(),
строка n2 массива a, содержит данные(),
………………..
надо print(номер строки ,т.е



Отредактировано (Ноя. 21, 2011 13:36:34)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version