Spec-Zone.ru › Tcl/Tk

lsearch

ИМЯ
lsearch — Проверка, содержит ли список определённый элемент
СИНТАКСИС
ОПИСАНИЕ
ВАРИАНТЫ СТИЛЯ СОПОСТАВЛЕНИЯ
-exact
-glob
-regexp
-sorted
ОБЩИЕ ВАРИАНТЫ МОДИФИКАЦИИ
-all
-inline
-not
-start индекс
ВАРИАНТЫ ОПИСАНИЯ СОДЕРЖИМОГО
-ascii
-dictionary
-integer
-nocase
-real
ВАРИАНТЫ СОРТИРОВАННОГО СПИСКА
-decreasing
-increasing
-bisect
ВАРИАНТЫ ВЛОЖЁННОГО СПИСКА
-index список_индексов
-subindices
ПРИМЕРЫ
СМОТРИТЕ ТАКЖЕ
КЛЮЧЕВЫЕ СЛОВА

Имя

lsearch — Проверка, содержит ли список определённый элемент

Синтаксис

lsearch ?варианты? список шаблон

Описание

Эта команда ищет в элементах списка, чтобы увидеть, соответствует ли какой-либо из них шаблону. Если это так, команда возвращает индекс первого соответствующего элемента (если не указаны параметры -all или -inline). Если нет, команда возвращает -1. Аргументы вариантов указывают, как элементы списка должны сопоставляться с шаблоном, и должны иметь одно из значений ниже:

Варианты стиля сопоставления

Если все варианты стиля сопоставления пропущены, значение по умолчанию — -glob. Если указано более одного стиля сопоставления, приоритет имеет последний указанный стиль сопоставления.
-exact
Шаблон — это буквальная строка, которая сравнивается на точное равенство с каждым элементом списка.
-glob
Шаблон — это шаблон в стиле glob, который сопоставляется с каждым элементом списка с использованием тех же правил, что и команда string match.
-regexp
Шаблон обрабатывается как регулярное выражение и сопоставляется с каждым элементом списка с использованием правил, описанных в справочной странице re_syntax.
-sorted
Элементы списка отсортированы. Если этот параметр указан, lsearch будет использовать более эффективный алгоритм поиска для поиска в списке. Если не указаны другие параметры, предполагается, что список отсортирован в порядке возрастания и содержит строки ASCII. Этот параметр несовместим с -glob и -regexp и обрабатывается точно так же, как -exact, когда указаны -all или -not.

Общие варианты модификаций

Эти параметры могут быть указаны со всеми стилями сопоставления.
-all
Изменяет результат на список всех совпадающих индексов (или всех совпадающих значений, если также указан параметр -inline). Если возвращаются индексы, индексы будут в числовом порядке. Если возвращаются значения, порядок значений будет таким же, как в исходном списке.
-inline
Возвращается соответствующее значение, а не его индекс (или пустая строка, если ни одно значение не соответствует). Если также указан параметр -all, результат команды — список всех совпавших значений.
-not
Это инвертирует смысл сопоставления, возвращая индекс первого несоответствующего значения в списке.
-start индекс
Поиск в списке начинается с позиции индекс. Интерпретация значения индекс такая же, как для команды string index, поддерживаются простые арифметические вычисления индексов и индексы, относящиеся к концу списка.

Варианты описания содержимого

Эти параметры описывают, как интерпретировать элементы в искомом списке. Они имеют смысл только при использовании с параметрами -exact и -sorted. Если указано более одного, приоритет имеет последний. Значение по умолчанию — -ascii.
-ascii
Элементы списка рассматриваются как строки Unicode (название для обратной совместимости).
-dictionary
Элементы списка сравниваются с использованием сравнений в стиле словаря (см. lsort для более подробного описания). Обратите внимание, что это имеет значение только по сравнению с параметром -ascii, когда указан параметр -sorted, поскольку значения равны только в случае точного равенства.
-integer
Элементы списка сравниваются как целые числа.
-nocase
Приводит к тому, что сравнения обрабатываются в режиме без учёта регистра. Не имеет эффекта, если используется вместе с параметрами -dictionary, -integer или -real.
-real
Элементы списка сравниваются как значения с плавающей точкой.

Варианты сортированного списка

Эти параметры (имеют смысл только с параметром -sorted) указывают, как отсортировать список. Если указано более одного, приоритет имеет последний. Значение по умолчанию — -increasing.
-decreasing
Элементы списка сортируются в порядке убывания. Этот параметр имеет смысл только при использовании с -sorted.
-increasing
Элементы списка сортируются в порядке возрастания. Этот параметр имеет смысл только при использовании с -sorted.
-bisect
Неточный поиск, когда элементы списка отсортированы. Для возрастающего списка возвращается последний индекс, где элемент меньше или равен шаблону. Для убывающего списка возвращается последний индекс, где элемент больше или равен шаблону. Если шаблон находится перед первым элементом или список пуст, возвращается -1. Этот параметр подразумевает -sorted и не может использоваться с -all или -not.

Варианты вложенного списка

Эти параметры используются для поиска во вложенных списках. Их можно использовать вместе с другими параметрами.
-index список_индексов
Этот параметр предназначен для использования при поиске во вложенных списках. Аргумент список_индексов задаёт путь индексов (так же, как может использоваться с командами lindex или lset) внутри каждого элемента, чтобы найти место искомого термина.
-subindices
Если этот параметр указан, индексный результат этой команды (или каждый индексный результат при указании также -all) будет полным путём (подходящим для использования с lindex или lset) внутри всего списка до найденного элемента. Этот параметр не имеет эффекта, если не указан -index, и это просто удобный сокращённый вариант.

Примеры

Базовый поиск:
lsearch {a b c d e} c
      → 2
lsearch -all {a b c a b c} c
      → 2 5

Использование lsearch для фильтрации списков:

lsearch -inline {a20 b35 c47} b*
      → b35
lsearch -inline -not {a20 b35 c47} b*
      → a20
lsearch -all -inline -not {a20 b35 c47} b*
      → a20 c47
lsearch -all -not {a20 b35 c47} b*
      → 0 2

Это даже может выполнять операцию «удаления в стиле множества»:

lsearch -all -inline -not -exact {a b c a d e a f g a} a
      → b c d e f g

Поиск может начинаться с середины списка:

lsearch -start 3 {a b c a b c} c
      → 5

Также можно искать внутри элементов:

lsearch -index 1 -all -inline {{a abc} {b bcd} {c cde}} *bc*
      → {a abc} {b bcd}

См. также

foreach, list, lappend, lindex, linsert, llength, lset, lsort, lrange, lreplace, string

Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TclCmd/lsearch.htm

Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TclCmd/lsearch.htm

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API