Помогите с преобразованием списка

Главная Форумы Python Помогите с питон кодом Помогите с преобразованием списка

Просмотр 15 сообщений - с 16 по 30 (из 36 всего)
  • Автор
    Сообщения
  • #2056 Score: 0
    Vladimir
    Участник
    13 pts

    я кинул лишь образец массива, сам массив мне изначально не известен. по сути я работаю с массивом свай (свайное поле), мне в спецификацию надо положить для каждого типа свай группы номеров.

    тип1 : 1-8, 10-20

    тип1: 9, 21-51

    и т.д.

    #2057 Score: 0
    Vladimir
    Участник
    13 pts

    в си это вот так

    class Program
    {
    static void Main(string[] args)
    {
    int[] arr = new int[] { 1, 3, 4, 4, 4, 4, 4, 4, 4, 6, 7, 9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 14, 101,102,103, 123, 124, 124, 125, 136 };

    string s = “”;
    for (int i = 0; i < arr.Length; i++)
    {
    s += arr[i] + (i == arr.Length – 1 ? “” : “, “);
    }
    Console.WriteLine(“Исходный массив:”);
    Console.WriteLine(s);

    int[] newarr = arr.Distinct().ToArray();
    s = “”;
    for (int i = 0; i < newarr.Length; i++)
    {
    s += newarr[i] + (i == newarr.Length – 1 ? “” : “, “);
    }
    Console.WriteLine(“Новый массив:”);
    Console.WriteLine(s);

    s = newarr[0].ToString();
    int prev = newarr[0];

    int c = 0;

    for (int i = 1; i < newarr.Length; i++)
    {
    int t = prev + 1;
    if (t == newarr[i])
    {
    c += 1;
    }
    else
    {
    if (c == 0)
    {

    #2058 Score: 0
    Vladimir
    Участник
    13 pts

    шо, никто не поможет скрыптом?

    #2060 Score: 0
    Legantmar
    Хранитель
    474 pts

    дык, а чего нужно то?

    скрипт ты показал, я думал, что все сделал уже..

    #2061 Score: 0
    Vladimir
    Участник
    13 pts

    не хватает знаний питона) тема же “помогите с питон кодом”. т.к. примера решения подобной задачи пока не видел, сам не могу записать, а Лутца я дочитаю ой как не скоро, много воды.

    #2062 Score: 0
    Legantmar
    Хранитель
    474 pts

    скрипт на си мне не понятен (точнее догадываюсь, но это не то, что ты хотел в самом начале)

    давай с самого начала:

    //Есть некий список [1,1,2,2,2,2,3,4,4,4,7,7,7,8,9,10,10]

    надо его привести к виду 1-4, 7-10 //

    Потом ты говоришь, что: ” я не знаю заранее, где будет разрыв в списке, потому не могу вот так указать, например, 4. Так же разрыв может быть не один, т.е. на выходе может быть и не 2 массива. ”

    Что определяет разрыв? как он задается?

    Опиши БОЛЕЕ ДЕТАЛЬНО задачу или приложи конкретный файлик.

    #2063 Score: 0
    Евгений Колчин
    Участник
    11 pts

    Понятно же вроде. Надо найти в этом массиве интервалы с шагом 1. Где шаг больше единицы интервалы отделяются друг от друга. Потом интервалы именуется по первому и конечному значению через тире.

    #2064 Score: 1
    Legantmar
    Хранитель
    474 pts

    Жень, я все равно не понимаю.

    Володь набросал вот так:

    #2066 Score: 0
    Vladimir
    Участник
    13 pts

    Евгений все верно написал. Разрыв – это разница между значениями больше 1. самих таких пар типа 1-4 и 7-10 может быть хоть 10. зрительно выдернуть, что на цифре 4 у меня начинается новая серия с шагом 1 просто не реально. вот пример, который пришлось зрительно выискивать 2-196, 599-1044, 4051-5009.

    #2068 Score: 0
    Vladimir
    Участник
    13 pts

    Всего свай около 10тыс, небольшой объект, КАМАЗ, но бывает все гораздо печальнее.

    #2069 Score: 0
    Legantmar
    Хранитель
    474 pts

    я правильно понимаю, что из списка 1,1,2,2,2,2,3,4,4,4,7,7,7,8,9,10,10

    это могут быть интервалы 1-3, 1-4, 1-7, 1-8, 1-9, 1-10, 2-4, 2-7, 2-8, 2-9, 2-10, 3- 7, 3-8, 3-9, 3-10, 4-7, 4-8, 4-9, 4-10, 7-9, 7-10, 8-10 ?

    #2070 Score: 0
    Vladimir
    Участник
    13 pts

    нет, возьмем ряд 1,2,3,4,5,10,11,12,16,17,18,19,25,26,27,28,29,30

    результат 1-5,10-12,16-19,25-30

    #2072 Score: 3
    Евгений Колчин
    Участник
    11 pts

    Вроде получилось.Использовал только один кастом нод из пакета ClockWork – List.ChopByLenghts. Ссылка: DivideNumberRange

    #2073 Score: 3
    Legantmar
    Хранитель
    474 pts

    чето накрутил, сам не знаю как

    inn=IN[0]
    a = []
    for i in range(len(IN[0])):
    if i == 0:
    a.append(inn[0])
    elif i< =(len(IN[0])-2) and inn[i+1]-inn[i]>1:
    a.append(inn[i])
    a.append(inn[i+1])
    elif i == (len(IN[0])-1):
    a.append(inn[-1])
    aa=[]
    j=0
    for k in range(len(a)-1):
    aa.append(str(a[j]) + "-" + str(a[j+1]))
    j=j+2
    if j > len(a)-1:
    break
    OUT=aa

    p.s. смотрю Женя опередил, молодец

    #2074 Score: 0
    Евгений Колчин
    Участник
    11 pts

    Да, только с ошибкой. Уже исправил. Файл перезалил уже, щас скрин обновлю.

Просмотр 15 сообщений - с 16 по 30 (из 36 всего)
  • Для ответа в этой теме необходимо авторизоваться.