Tips and tricks (Советы и приемы)

Главная Форумы Python Синтаксис и родные библиотеки Python Tips and tricks (Советы и приемы)

В этой теме 66 ответов, 8 участников, последнее обновление  Legantmar 2 мес., 3 нед. назад.

Просмотр 15 сообщений - с 31 по 45 (из 67 всего)
  • Автор
    Сообщения
  • #4690 Score: 1

    Khasan Mamaev
    Хранитель
    176 pts

    или вот так OUT = [i/10.0 for i in range(10)]

    #4701 Score: 1

    Legantmar
    Хранитель
    435 pts

    for i, k in list1:

    #4705 Score: 0

    Legantmar
    Хранитель
    435 pts

    Хасан уже выше написал, но все же повторюсь для закрепления

    Вот эту конструкцию кода

    Можно записать короче и несколькими способами:

    sposob1 = [i for i in numbers if i<4]
    sposob2 = list(i for i in numbers if i<4) # или (i for i in numbers if i<4)
    sposob3 = filter(lambda x: x<4, numbers)

    где, к примеру,  numbers = [1,2,3,4,5,6,7,8,9]

    #4706 Score: 1

    Legantmar
    Хранитель
    435 pts

    для понимания классов (class), небольшая “шпаргалка”

    #4719 Score: 0

    Legantmar
    Хранитель
    435 pts

    тип данных GetTypeCode()

    #4720 Score: 0

    Legantmar
    Хранитель
    435 pts

    как найти позицию 1-ой повторяющейся буквы

    s = "abcdefgh abcdeffgh"
    OUT = [i for i in range(len(s)-1) if s[i]== s[i +1]][0]

    а вот так он найдет позиции всех повторяющихся букв OUT = [i for i in range(len(s)-1) if s[i]== s[i +1]]

    #4746 Score: 2

    Legantmar
    Хранитель
    435 pts
    #4747 Score: 0

    Legantmar
    Хранитель
    435 pts

    для длинных строчек, можно использовать переносы строк через символ  \

    OUT = “Оборонос\
    пособность”

    это справедливо и для скобок (круглые, фигурные или квадратные)

    для многострочных “код-блоков” можно использовать тройные! кавычки (аналогично комментированию строк, только вначале стоит = )

    #4783 Score: 1

    Khasan Mamaev
    Хранитель
    176 pts

    Часто приходится из массива точек Динамо или Ревит выбирать уникальные, но стандартные средства Динамо и Питон не годятся для этой цели, поэтому мной был написан код с использованием метода DistanceTo. Можно задавать точность с которой будет определяться идентичность точек. Это необходимо, поскольку Питон считает две точки с идентичными координатами двумя разными точками.

    import clr
    clr.AddReference('ProtoGeometry')
    from Autodesk.DesignScript.Geometry import *
    
    pts = IN[1]
    
    uniq = []
    while len(pts) > 1:
        first = pts.pop(0)
        for i in pts:
            if first.DistanceTo(i) < 0.0001:
                uniq.append(i)
    OUT = uniq
    #4790 Score: 0

    Legantmar
    Хранитель
    435 pts

    OUT = range(0,3) выдаст 0,1,2
    а если нужно в обратном порядке, то OUT = range(3,0) ничего не выдаст
    в этом случае нужно перевернуть порядок цифр (реверс) OUT = range(0,3)[::-1] выдаст 2,1,0

    #4791 Score: 1

    Khasan Mamaev
    Хранитель
    176 pts

    или так
    range(5,0,-1)

    #4811 Score: 0

    Legantmar
    Хранитель
    435 pts

    return vs global
    в некоторых случаях использовать переменные типа global внутри функций удобнее, чем return
    пример:

    #4845 Score: 2

    Dmitry_dronov
    Модератор
    49 pts

    Сплющивание из второго порядка без флаттена в питоне:

    out_ = [i for sublist in list_of_lists for i in sublist]

    #4846 Score: 1

    Khasan Mamaev
    Хранитель
    176 pts

    а вот так map(lambda x: x[0], list) ?

    #4868 Score: 0

    Legantmar
    Хранитель
    435 pts

    zip и unzip списков (листов) (не путать с zip файлами )))

    # объединение элементов из каждого списка
    a = [1,2]
    b= [3,4]
    c= [5,6]
    L= zip(a, b, c)
    OUT = L # результат [(1, 3, 5), (2, 4, 6)]

    # разъединение zip листа  (например, после сортировки sorted(L, key = lambda lists: lists[0]))
    a = zip(*L)[0]   # [1,2]
    b = zip(*L)[1]   # [3,4]
    c = zip(*L)[2]   # [5,6]

Просмотр 15 сообщений - с 31 по 45 (из 67 всего)

Для ответа в этой теме необходимо авторизоваться.