1 / 1 / 0 Регистрация: 22.12.2019 Сообщений: 36 |
|
1 |
|
Номер последнего чётного элемента массива, как определить?04.03.2020, 18:43. Показов 3606. Ответов 11
Приветствую, по учёбе проходится тема с массивами, не могу понять, как определить последний чётный элемент в массиве и вывести его индекс, прошу помощи. Спасибо.
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
04.03.2020, 18:43 |
11 |
1467 / 1008 / 456 Регистрация: 30.10.2017 Сообщений: 2,793 |
|
04.03.2020, 18:46 |
2 |
del
0 |
Diamante 3457 / 2464 / 1170 Регистрация: 14.08.2016 Сообщений: 8,158 |
||||
04.03.2020, 18:50 |
3 |
|||
Сообщение было отмечено sancez2 как решение Решение
0 |
QuakerRUS 1467 / 1008 / 456 Регистрация: 30.10.2017 Сообщений: 2,793 |
||||
04.03.2020, 18:57 |
4 |
|||
0 |
1 / 1 / 0 Регистрация: 22.12.2019 Сообщений: 36 |
|
04.03.2020, 19:08 [ТС] |
5 |
Diamante, а как в данной ситуации к i добавить ещё одну единицу?
0 |
Enifan 1841 / 1183 / 501 Регистрация: 14.10.2018 Сообщений: 3,179 |
||||
04.03.2020, 19:16 |
6 |
|||
к i добавить ещё одну единицу
0 |
sancez2 1 / 1 / 0 Регистрация: 22.12.2019 Сообщений: 36 |
||||
04.03.2020, 19:20 [ТС] |
7 |
|||
При i + 1 добавляется непонятно что. Вот сам код:
0 |
1841 / 1183 / 501 Регистрация: 14.10.2018 Сообщений: 3,179 |
|
04.03.2020, 19:42 |
8 |
sancez2, не, вы не поняли, вам дали 2 разных кода из 3 и 4 постов, а вы их смешали. Используйте что то одно.
0 |
1 / 1 / 0 Регистрация: 22.12.2019 Сообщений: 36 |
|
04.03.2020, 20:41 [ТС] |
9 |
Просто первый код выводит сам элемент, а в второй его номер, вот я и подумал. Работает всё правильно, как нужно, в случае, если отсчет в массиве начинается с нуля, без использования i + 1 выводится верный номер, если считать с нуля. Добавлено через 18 минут
0 |
1467 / 1008 / 456 Регистрация: 30.10.2017 Сообщений: 2,793 |
|
04.03.2020, 23:42 |
10 |
Просто первый код выводит сам элемент Нет, он выдает индекс. sancez2, если используете мой код, то строки 24-27 и 29-31 лишние.
i + 1 Не забывайте, что индексы в C# начинаются с нуля.
0 |
1 / 1 / 0 Регистрация: 22.12.2019 Сообщений: 36 |
|
05.03.2020, 00:17 [ТС] |
11 |
Я использовал только код из первого сообщения, которое Вы удалили, чтобы вывести сам элемент массива, а потом взял уже другой код от Diamante, т.е. я объединил их. Насчёт элементов массива, я писал о том, что не пойму, как добавить единицу, т.к. нумерация начинается с нуля, она добавлялась просто доп. элементом справа, а потом понял, что i + 1 нужно записать в скобках, так что всё нормально, спасибо) Глядя на косяки, ничего страшного особо нет в этом, эти работы делаются для сдачи на учёбе)
0 |
1467 / 1008 / 456 Регистрация: 30.10.2017 Сообщений: 2,793 |
|
05.03.2020, 00:35 |
12 |
т.е. я объединил их Этого не стоило делать, по крайней мере сделали вы это неверно.
эти работы делаются для сдачи на учёбе Ну, если у вас преподаватель принимает некорректные решения, то тогда ладно.
0 |
Как найти последний четный и нечетный элемент?
Как найти последний четный и нечетный элемент?
через css можно? или только js?
-
Вопрос заданболее двух лет назад
-
173 просмотра
1
комментарий
Решения вопроса 1
@Kozack Куратор тега CSS
Thinking about a11y
Думаю как-то так:
element:nth-last-child(1),
element:nth-last-child(2) { }
Комментировать
Пригласить эксперта
Похожие вопросы
-
Показать ещё
Загружается…
19 мая 2023, в 00:55
3000 руб./за проект
18 мая 2023, в 23:42
1800 руб./за проект
18 мая 2023, в 22:57
500 руб./за проект
Минуточку внимания
I want to find the index of the last element containing an even number in an array, A, with ‘length’ number of elements.
For example, for A = {1, 2, 4, 5, 7}
we would return 2 as the value 4 is the last even number and it is at index 2 in the array.
I am required to use a for loop where the fewest number of elements need to be tested, where the first line follows the format:
for ( i = ??; i > ??; i = ??)
I think there’s something wrong with the first line of my code but I don’t know how to fix it.
for ( i = length-1; i >= 0; i = i-1) {
if ( A[i] % 2 == 0) { // value mod 2 = 0 indicates even
return i;
}
error: subscripted value is neither array nor pointer nor vector
'if (A[i]% 2==0) { // value mod 2 = 0 indicates even'
Gerhardh
10.7k3 gold badges13 silver badges36 bronze badges
asked May 16, 2019 at 7:28
5
Here is how I would write it:
int num = -1;
for ( i = length-1; i > -1; i = i-1) {
//Check if the array is even
if( A[i] % 2 == 0 )
// If it hasn't found an even number yet, automatically set num equal to the index
// This avoids accessing the element in the "-1" position in the array which would
// give an error
if( num == -1 )
num = i;
// If the element at the 'i' position is greater than the previous greatest element
// then set num equal to the index
else if( A[i] > A[num] )
num = i;
}
// It will return -1 if an even number isn't found
return num;
This will work if A is an array. It sounds like A currently isn’t the array you’re thinking it is; it may be an array of arrays or something similar. If you post the rest of your code it will help to resolve the error.
This answer may help you with your error
answered May 16, 2019 at 12:27
Вступление
В этом руководстве мы рассмотрим некоторые из наиболее распространенных
способов найти последний элемент в списке в Python. Сначала мы
рассмотрим самый простой и наиболее питонический способ, а затем
покажем некоторые другие альтернативные решения.
Давайте посмотрим на список, который мы будем использовать:
exampleList = [1, 2, "Three", ["Four", 5], 6]
Примечание. Список в Python – это набор элементов, которые не
обязательно одного типа. Один список может содержать элементы, которые
являются числами, строками, вложенными списками и т. Д.
Как получить последний элемент в списке Python
Есть несколько способов получить последний элемент списка в Python –
некоторые из них более интуитивно понятны и практичны, чем другие, а
некоторые из них фактически изменяют исходный список на месте:
- Использование отрицательной
индексации – лучший
подход - Использование индексации
- Использование метода
pop()
- Использование нарезки
- Использование обратного итератора
- Использование метода
reverse()
- Использование
itemgetter
- Использование петель
Лучшее решение – использование отрицательной индексации
Python поддерживает понятие отрицательной индексации как метод
доступа к элементам списка. Это означает, что мы можем получить доступ к
элементам в обратном порядке , используя оператор []
Как работает индексация в списках, хорошо известно:
firstElement = exampleList[0]
nthElement = exampleList[n-1]
...
Первый элемент имеет индекс 0
, второй имеет индекс 1
, а n
й
элемент имеет индекс n-1
.
Отрицательная индексация следует той же логике, но в обратном порядке.
Последний элемент имеет индекс -1
, предпоследний элемент имеет индекс
-2
и так далее:
lastElement = exampleList[-1]
print("Last element: ", lastElement)
print("exampleList: ", exampleList)
secondToLast = exampleList[-2]
print("Second to last element: ", secondToLast)
Какие выходы:
Last element: 6
exampleList: [1, 2, 'Three', ['Four', 5], 6]
Second to last element: ['Four', 5]
Отрицательная индексация не изменяет исходный список. Это всего лишь
способ доступа к элементам без каких-либо изменений в исходном списке.
Это, безусловно, самое простое и наиболее подходящее для Python решение.
Использование индексации
Простая индексация обычно используется для доступа к элементам в списке
в исходном порядке с помощью оператора []
Как описано выше, первый
элемент имеет индекс 0
, второй элемент имеет индекс 1
и так далее.
Зная это, мы можем сделать вывод, что последний элемент имеет индекс
len(exampleList)-1
:
lastElement = exampleList[len(exampleList)-1]
print("Last element: ", lastElement)
print("exampleList: ", exampleList)
secondToLast = exampleList[len(exampleList)-2]
print("Second to last element: ", secondToLast)
Какие выходы:
Last element: 6
exampleList: [1, 2, 'Three', ['Four', 5], 6]
Second to last element: ['Four', 5]
Помимо отрицательной индексации, метод индексации используется только
для доступа к элементам списка без внесения каких-либо изменений в
исходный список.
Использование метода pop ()
В Python метод pop()
используется для удаления последнего элемента
данного списка и возврата удаленного элемента.
Метод
pop()
может дополнительно принимать целочисленный аргумент.
Это индекс элемента, который мы хотим удалить, поэтому, если мы
вызовемexampleList.pop(0)
, первый элемент будет удален и
возвращен.Если аргумент – отрицательное число, будет выполнена логика
отрицательной индексации, чтобы определить, какой элемент удалить.
ВызовexampleList.pop(-1)
приведет к удалению последнего элемента
examleList
.
Хотя, поскольку метод pop()
по умолчанию уже выталкивает последний
элемент , нет никакой реальной необходимости использовать индексацию:
lastElement = exampleList.pop()
print("Last element: ", lastElement)
print("exampleList: ", exampleList)
Какие выходы:
Last element: 6
exampleList: [1, 2, 'Three', ['Four', 5]]
Обратите внимание, что метод pop()
по определению изменяет исходный
список , удаляя всплывающий элемент.
Использование нарезки
В Python нотация срезов используется для получения подсписка списка.
Сама запись довольно проста:
exampleList[startIndex:[endIndex[:indexStep]]]
Это означает, что мы можем получить exampleList
с индексами, начиная с
startIndex
, вплоть до endIndex
с шагом indexStep
.
endIndex
и indexStep
– необязательные аргументы. Если мы оставим
поле endIndex
пустым, его значение по умолчанию будет концом исходного
списка. Значение по умолчанию для indexStep
– 1
.
Если у нас есть список
l=['a', 'b', 'c', 'd', 'e']
и нарезать его,
используяl[1:3]
результирующий подсписок будет['b', 'c', 'd']
.
Это означает, что мы выбираем элементы litsl
с индексами
1, 2, and 3
.
l[0:4:2]
вернет подсписок, содержащий только элементы с четными
индексами –0, 2, 4
.
Ключевой особенностью нотации срезов, которую мы будем использовать,
является то, что она поддерживает отрицательную индексацию.
Это означает, что l[-1:]
можно интерпретировать как: получить все
элементы в списке l
, от последнего элемента до конца списка l
.
Результирующий подсписок будет содержать только последний элемент
исходного списка:
lastElement = exampleList[-1:][0]
# exampleList[-1:] alone will return the sublist - [6]
# exampleList[-1:][0] will return the last element - 6
print("Last element: ", lastElement)
print("exampleList: ", exampleList)
Какие выходы:
Last element: 6
exampleList: [1, 2, 'Three', ['Four', 5], 6]
Метод нарезки используется только для доступа к элементам списка и для
создания нового списка с их помощью – без внесения каких-либо изменений
в исходный список.
Использование обратного итератора
Python имеет две встроенные функции, которые мы будем использовать в
этом методе – reversed()
и next()
.
reversed()
принимает список в качестве аргумента и возвращает обратный
итератор для этого списка, что означает, что итерация отменяется,
начиная с последнего элемента до первого элемента. next()
принимает
итератор и возвращает следующий элемент из итератора:
reversedIterator = reversed(exampleList)
lastElement = next(reversedIterator)
print("Last element: ", lastElement)
Какие выходы:
Last element: 6
exampleList: [1, 2, 'Three', ['Four', 5], 6]
Обратный метод итератора используется только для доступа к элементам
списка в обратном порядке – без внесения каких-либо изменений в исходный
список.
Использование метода reverse ()
Метод reverse()
используется для переворота элементов списка . Он
не принимает никаких аргументов и не возвращает никакого значения,
вместо этого он меняет исходный список на место . Это означает, что мы
можем перевернуть список и получить доступ к новому первому элементу:
# Update the original list by reversing its' elements
exampleList.reverse()
# Access the first element of the updated list
lastElement = exampleList[0]
print("Last element: ", lastElement)
print("exampleList: ", exampleList)
Какие выходы:
Last element: 6
exampleList: [6, ['Four', 5], 'Three', 2, 1]
Метод reverse()
по определению изменяет исходный список, меняя порядок
его элементов. Имейте в виду, что такой подход может оказаться
действительно неэффективным излишеством, так как для переворота списка
требуется время.
Использование itemgetter ()
Модуль operator
предоставляет множество эффективных методов,
выполняющих все основные операции в Python, такие как математические и
логические операции, а также другие операции сравнения объектов и
последовательности.
Метод itemgetter()
– один из многих методов в модуле operator
Он
принимает одно или несколько целых чисел в качестве аргумента и
возвращает вызываемый объект, который можно рассматривать как тип
специальной функции.
Когда мы вызываем operator.itemgetter(0)
, результирующий объект будет
функцией, которая получит первый элемент в коллекции. Мы также можем
присвоить этому объекту имя:
getFirstElement = operator.itemgetter(0)
Теперь мы можем передать список в getFirstElement(l)
, который
возвращает первый элемент из списка l
.
Оператор itemgetter()
поддерживает отрицательную индексацию,
поэтому получение последнего элемента сводится к следующему:
import operator
getLastElement = operator.itemgetter(-1)
lastElement = getLastElement(exampleList)
print("Last element: ", lastElement)
print("exampleList: ", exampleList)
Какие выходы:
Last element: 6
exampleList: [1, 2, 'Three', ['Four', 5], 6]
Этот подход не изменяет исходный список – он генерирует вызываемый
объект, который обращается к нему с помощью индексов.
Использование петель
Теперь гораздо более ручной и элементарный подход будет использовать
циклы. Мы можем перебирать список, используя длину списка в качестве
последнего шага. Затем, на len(l)-1
мы можем просто вернуть этот
элемент:
for i in range(0, len(exampleList)):
if i == (len(exampleList)-1) : lastElement = exampleList[i]
print("Last element: ", lastElement)
print("exampleList: ", exampleList)
Какие выходы:
Last element: 6
exampleList: [1, 2, 'Three', ['Four', 5], 6]
Это также не меняет список вообще, а просто получает доступ к элементу.
Заключение
Есть много способов получить последний элемент в списке в Python.
Основное беспокойство при выборе правильного для вас способа – погода
или нет, вы хотите, чтобы последний элемент был удален.
Если вам нужно получить последний элемент без внесения каких-либо
изменений в исходный список, то метод отрицательной индексации
является явным победителем. Это самый простой и самый питонический
способ решить эту проблему.
С другой стороны, если вам нужно удалить последний элемент, а также
получить к нему доступ, вам, вероятно, следует использовать метод
pop()
, который является встроенным методом для выполнения именно
этого поведения.
Для каждой строки найти последний четный элемент и записать данные в новый массив.
В паскале.
Вы открыли страницу вопроса Для каждой строки найти последний четный элемент и записать данные в новый массив?. Он относится к категории
Информатика. Уровень сложности вопроса – для учащихся 10 – 11 классов.
Удобный и простой интерфейс сайта поможет найти максимально исчерпывающие
ответы по интересующей теме. Чтобы получить наиболее развернутый ответ,
можно просмотреть другие, похожие вопросы в категории Информатика,
воспользовавшись поисковой системой, или ознакомиться с ответами других
пользователей. Для расширения границ поиска создайте новый вопрос, используя
ключевые слова. Введите его в строку, нажав кнопку вверху.