powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Удаление элементов из листа list
5 сообщений из 5, страница 1 из 1
Удаление элементов из листа list
    #38512553
eduard93
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изначально у меня есть лист со всеми непустыми элементами, например $LB("1","2","3","4").
Затем я его прохожу в цикле и часть элементов удаляю (заменяю на пустые) с помощью $LIST, получая $LB("1",,,"4").
А хочу я получить $LB("1","4").
Как мне этого добиться? Можно, конечно, перебрать получившийся лист с помощью $LISTNEXT и если текущий элемент не пустой, то конкатенировать к какой-нибудь строке, а потом $LISTFROMSTRING, но может есть более оптимальные варианты?
...
Рейтинг: 0 / 0
Удаление элементов из листа list
    #38512627
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eduard93, оптимально это как? не проверял:

 ;плохо
 s str=$lts( list ) for { Q:'$f( str, ",," )  s str=$replace( str, ",," , "," )} s list=$lfs( str )
 ;лучше
 s pure="", p=0, item="", i=0 while $LISTNEXT( list, p, item ){  s:item'="" i=i+1, $li( pure, i )=item }  
 k list Q pure
...
Рейтинг: 0 / 0
Удаление элементов из листа list
    #38512684
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eduard93Изначально у меня есть лист со всеми непустыми элементами, например $LB("1","2","3","4").
Затем я его прохожу в цикле и часть элементов удаляю (заменяю на пустые) с помощью $LIST, получая $LB("1",,,"4").
А хочу я получить $LB("1","4").
Как мне этого добиться? Можно, конечно, перебрать получившийся лист с помощью $LISTNEXT и если текущий элемент не пустой, то конкатенировать к какой-нибудь строке, а потом $LISTFROMSTRING, но может есть более оптимальные варианты?
http://karataev.nm.ru/cache/list3.html
...
Рейтинг: 0 / 0
Удаление элементов из листа list
    #38514713
eduard93
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну я http://karataev.nm.ru/cache/list3.html
Хм, почитал, помогло, спасибо.
Просуммирую (там этот момент не акцентирован) - для удаления элемента из списка необходимо вызывать $list с тремя параметрами, т.е. s $list(list,i,i)="" для удаления i-го элемента из листа list. Вызов $list с двумя параметрами приводит к замене i-го элемента из листа list на "". Пример:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
USER>set a=$lb(1,2,3,4)
USER>set b=$lb(1,2,3,4)
USER>w $listtostring(a)
1,2,3,4
USER>w $listtostring(b)
1,2,3,4
USER>s $list(a,2)=""
USER>s $list(b,2,2)=""
USER>w $listtostring(a)
1,,3,4
USER>w $listtostring(b)
1,3,4
...
Рейтинг: 0 / 0
Удаление элементов из листа list
    #38515017
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eduard93 ,
Документация 2014.1
  • You can perform the following two-parameter operations. Note that two-parameter operations specify an element value as a string .
  • You can perform the following three-parameter (range) operations. Note that range operations specify an element values as a list, even when specifying a single element value .
Replacing Elements Using SET $LIST (2013.1)С учётом сказанногоset a=$lb(1,2,3,4)
w $lts(a),!!

s b=a,$li(b,2)=""  w $lts(b),!
s b=a,$li(b,2,2)=$lb("") w $lts(b),!
s b=a,$li(b,2,2)=""  w $lts(b),!

Код: plaintext
1.
2.
3.
4.
1,2,3,4
 
1,,3,4
1,,3,4
1,3,4
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Удаление элементов из листа list
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]