Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/34: Рейтинг темы: голосов - 34, средняя оценка - 4.88
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22

Возможно ли по индексу получать элементы списка/кортежа?

23.07.2017, 14:01. Показов 6770. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возможно ли по индексу получать элементы списка/кортежа? Типа такого:
Pascal
1
value = list[index]
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.07.2017, 14:01
Ответы с готовыми решениями:

По индексу вызывать метод из кортежа
осваиваю с++11 компилятор не пропускает следующий код в методе MyClass::get .Что сделано не верно? Идея : по индексу вызывать метод из...

Использование элементов списка или кортежа ровно один раз
Вопрос, как сделать так, чтобы все элементы списка или кортежа использовались только один раз. Например, есть числа: 1, 2, 3, 4, 5, 6, 7,...

Как проще найти все индексы списка, кортежа по значению?
four = ('10', '30', '30') print(four.index('30')) В этом случае вернет число 1. Нет функции, чтоб вернул кортеж или список из все...

16
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
23.07.2017, 14:03
!! в любом учебнике
весьма вредная по времени операция
3
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
23.07.2017, 14:05  [ТС]
Хм, почему? В императивных языках за наносекунду могу получать доступ к элементам...
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
23.07.2017, 14:09
Лучший ответ Сообщение было отмечено Volobuev Ilya как решение

Решение

Цитата Сообщение от Volobuev Ilya Посмотреть сообщение
Хм, почему?
потому как это односвязанный список. чтоб найти n-ый элемент надо перебрать n элементов.

Не по теме:

ЗЫ вот он результат качества учебников по хаскелю

1
Модератор
 Аватар для Curry
5158 / 3478 / 536
Регистрация: 01.06.2013
Сообщений: 7,538
Записей в блоге: 9
23.07.2017, 14:10
Лучший ответ Сообщение было отмечено Volobuev Ilya как решение

Решение

Цитата Сообщение от Volobuev Ilya Посмотреть сообщение
Возможно ли по индексу получать элементы списка/кортежа?
Элементы списка list !! index. Кортежи не индексируются, хотя видел пакет для индексации гомогенных кортежей, но не стоит пока такие пакеты смотреть.
2
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
23.07.2017, 14:13  [ТС]
Хм. В некоторых языках List организован на базе динамического массива, в том же PascalABC.Net. Поэтому и возник вопрос.

Добавлено через 2 минуты
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Кортежи не индексируются

Не по теме:

Хм, еще одно отличие от императивных языков.

0
Модератор
 Аватар для Curry
5158 / 3478 / 536
Регистрация: 01.06.2013
Сообщений: 7,538
Записей в блоге: 9
23.07.2017, 14:22

Не по теме:

Цитата Сообщение от pycture Посмотреть сообщение
вот он результат качества учебников по хаскелю
У Алехандро Серано Мена описывается как устроен список, и даже как устроен ленивый список.
Просто кто то невнимательно читает.



Цитата Сообщение от Volobuev Ilya Посмотреть сообщение
В некоторых языках List организован на базе динамического массива
В Haskell динамические массивы и прочие контейнеры реализованы отдельными пакетами.
Цитата Сообщение от Volobuev Ilya Посмотреть сообщение
еще одно отличие от императивных языков
Не от императивных. В кортежах могут быть элементы разных типов. Какой тип возвращать при такой индексации?
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
23.07.2017, 14:54  [ТС]
Хм, не знаю... Могу лишь сказать то, что в Python можно работать с списками (которые могут содержать элементы разного типа) как с обычными массивами - обращаться по индексам.
0
Модератор
 Аватар для Curry
5158 / 3478 / 536
Регистрация: 01.06.2013
Сообщений: 7,538
Записей в блоге: 9
23.07.2017, 15:10
Цитата Сообщение от Volobuev Ilya Посмотреть сообщение
Могу лишь сказать то, что в Python можно работать с списками (которые могут содержать элементы разного типа) как с обычными массивами
Я же написал : отличие не от императивных языков. А от языков с динамической типизацией. И у Мена, и у Шевченко написано что в Haskell (и в Pascal, и много где) статическая типизация, все данные известного уже во время компиляции типа.

Не по теме:

Для меня динамическая типизация это как рак прямой кишки во время атомной войны.
Но если вам хочется именно динамическую типизацию, то это не Haskell. Из функциональных тогда смотрите Erlang или Elixir.

0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
23.07.2017, 15:14
Цитата Сообщение от Volobuev Ilya Посмотреть сообщение
Хм, еще одно отличие от императивных языков
начнем с того что в императивных языках кортежей как правило нет
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,990
Записей в блоге: 32
23.07.2017, 16:45
Цитата Сообщение от pycture Посмотреть сообщение
весьма вредная по времени операция
Я раньше тоже так думал. Но потом постепенно пришло понимание, что в ленивом языке это вовсе не всегда так. Например, нам надо получить n-й член последовательности, заданной рекуррентно. Мы можем сформировать бесконечный ленивый поток через iterate а потом взять его n-й элемент по (!!). И развернется это в обычный цикл под капотом.
2
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
23.07.2017, 19:06
Цитата Сообщение от _Ivana Посмотреть сообщение
И развернется это в обычный цикл под капотом.
который O(n). про что и речь
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38170 / 21105 / 4307
Регистрация: 12.02.2012
Сообщений: 34,697
Записей в блоге: 14
23.07.2017, 19:34
Лучший ответ Сообщение было отмечено Volobuev Ilya как решение

Решение

А зачем списки (или, тем более, кортежи), когда есть Map:

Haskell
1
2
3
4
5
6
7
8
9
10
Prelude> import qualified Data.Map as Map
Prelude Map> let dict = Map.fromList $ zip [1..50] (map (\ k -> "v"++show k) [1..50]) 
Prelude Map> Map.lookup 47 dict
 
Just "v47"
 
Prelude Map> 
 
Prelude Map> dict
fromList [(1,"v1"),(2,"v2"),(3,"v3"),(4,"v4"),(5,"v5"),(6,"v6"),(7,"v7"),(8,"v8"),(9,"v9"),(10,"v10"),(11,"v11"),(12,"v12"),(13,"v13"),(14,"v14"),(15,"v15"),(16,"v16"),(17,"v17"),(18,"v18"),(19,"v19"),(20,"v20"),(21,"v21"),(22,"v22"),(23,"v23"),(24,"v24"),(25,"v25"),(26,"v26"),(27,"v27"),(28,"v28"),(29,"v29"),(30,"v30"),(31,"v31"),(32,"v32"),(33,"v33"),(34,"v34"),(35,"v35"),(36,"v36"),(37,"v37"),(38,"v38"),(39,"v39"),(40,"v40"),(41,"v41"),(42,"v42"),(43,"v43"),(44,"v44"),(45,"v45"),(46,"v46"),(47,"v47"),(48,"v48"),(49,"v49"),(50,"v50")]
2
Модератор
 Аватар для Curry
5158 / 3478 / 536
Регистрация: 01.06.2013
Сообщений: 7,538
Записей в блоге: 9
23.07.2017, 19:47
Цитата Сообщение от Catstail Посмотреть сообщение
А зачем списки (или, тем более, кортежи), когда есть Map
Всё надо! И много ещё чего есть - https://www.stackage.org/lts-8... r-0.11.0.0
https://www.stackage.org/lts-8... rs-0.5.7.1
https://www.stackage.org/lts-8... rs-0.2.8.0
https://www.stackage.org/lts-8... ay-0.5.1.1
https://www.stackage.org/lts-8... pa-3.4.1.2
- всё невозможно перечислить.
И всё надо. И даже ещё хочется!
2
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,990
Записей в блоге: 32
23.07.2017, 20:24
Цитата Сообщение от pycture Посмотреть сообщение
который O(n). про что и речь
Ну а как иначе получить энный рекуррентный член? Речь то можно завести не о том, как плох список при доступе по индексу. А о том, что в хаскеле он и не список вовсе, а ленивый поток, что он в сабже отлично фьюзится, и что рассматривать его надо не как дата-струкчу, а как контрол-струкчу - и все будет выглядеть немного по-другому, не так примитивно-наивно: какая плохая дата-струкча ленивый лист при произвольном доступе.
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
23.07.2017, 20:34
Цитата Сообщение от _Ivana Посмотреть сообщение
Ну а как иначе получить энный рекуррентный член?
никак. "весьма вредная по времени операция" это было предвидение будущего, которое мгновенно наступило в виде "В императивных языках за наносекунду могу получать доступ к элементам"
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,990
Записей в блоге: 32
23.07.2017, 20:39
Воистину. Но тогда, судя по темам и вопросам ТС, можно еще немного попредвидеть - а че эта строки такие медленные, а че эта расчет среднего арифметического элементов списка времени/памяти так многа жрет, а че ваще все так плохо и непонятно, у меня на Питоне/Си/етк все гораздо лучше и быстрее
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.07.2017, 20:39
Помогаю со студенческими работами здесь

Функция: выдать элемент списка по заданному индексу от конца списка [swi-prolog]
Помогите пожалуйста) Описать функцию, которая, выдавала бы элемент списка по заданному но- меру, отсчитывая элементы от конца списка.

Отсортировать Dictionary по ключу состоящий из кортежа, и отсортировать по второму элементу кортежа
В общем, у меня есть такой код: Dictionary<(int, int), int> _data = new Dictionary<(int, int), int>(); как его отсортировать...

Как связаны элементы кортежа shape, ndim, size?
Как связаны элементы кортежа shape, ndim, size?

Получать объекты из списка и изменять
У меня проблема, есть значит список, но я должен получать данные и обрабатывать примерно так - UsersList = "noner"; ...

Возможно ли в базе хранить вместо картинок имена файлов, а в отчете получать картинки ?
Возможно ли в базе хранить вместо картинок имена файлов, а в отчете получать сами картинки ? Хочу создать БД и использовать ее как для...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru