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

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

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

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

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

    a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # исходный список для примера

    двойное условие
    b = [x for x in a if x > 4 if x % 2 == 0] # если больше 4 и делится на 2 без остатка

    >>[6, 8, 10]

     

    Еще один пример:
    двойное условие в одну строку if и else
    IN[0] – список вложенных листов типа {{1,2,3},{},{},{3,4},{},{5}}
    OUT = [(i if i else 0) for i in IN[0]] # выдаст 0 если входной лист пуст или лист, если содержит элементы

    #5085 Score: 0

    Anton
    Участник
    3 pts

    Shift+Delete – удаляет строку в редакторе Python (Dynamo) (без необходимости её выделения).

    #5326 Score: 0

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

    Разделение текста с отсчетом справа записывается как rsplit()
    text = “word1.word2.txt”  # пример файла, где в названии есть точка
    text.rsplit(“.”, 1)  # где 1 – один разрез по точке “.”
    >>>[‘word1.word2’, ‘txt’] # в итоге получаем список, где [0] элемент списка – имя файла, а [1] – его расширение

    #5327 Score: 0

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

    text = “word1.txtword2.txt”
    print text.endswith(“.txt”)  # заканчивается ли текст на “.txt” ? лучше чем if “.txt” in text
    >>> True
    print text.startswith(“word”)  # начинается ли текст со слова “word”
    >>True

    #5507 Score: 0

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

    С помощью предварительно нажатой клавиши Shift можно переподключить группу соединений к другому выходному порту.
    Reconnect

    #5521 Score: 0

    Alex Babinoff
    Модератор
    13 pts

    С помощью предварительно нажатой клавиши Shift можно переподключить группу соединений к другому выходному порту.

    Это в 1.3 версии?

    #5522 Score: 0

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

    да
    (в версии 1.2.3 я не проверял)

    #5558 Score: 0

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

    Олег показал пример перевода числа в строку с помощью короткой записи на python

    OUT=('{}'.format(i) for i in IN[0])

    #5622 Score: 1

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

    Получение индексов повторяющихся элементов в отдельных списках (фильтрация из общего списка нужных элементов).
    В пример ниже нужно получить индексы цифр 1, 2 и 3 из входного листа [1,1,2,2,1,1, 3, 3]

    в итоге на выходе получим три списка типа [[0,1,4,5], [2,3],[6,7]]

    #5660 Score: 0

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

    конвертация int в byte, например для Revit Color

    import clr
    clr.AddReference('RevitAPI')
    import Autodesk.Revit.DB.Color as rColor
    import System.Convert as con

    rgb = [125, 25, 0] # [R, G, B]
    OUT = rColor(con.ToByte(rgb[0]), con.ToByte(rgb[1]), con.ToByte(rgb[2]))

    #6343 Score: 0

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

    псевдо chop в python
    (работает с текстом, поэтому вначале нужен str(inn))

    inn = str(11223234)
    chop = 2
    listChop = [int(inn[i*chop:i*chop+chop]) for i in range(len(inn)/chop)]

    Вывод будет таким: [11, 22, 32, 34]

    или такой вариант:

    lst = [1,2,3,4,5,6]
    chop = 2
    print  [lst[x:chop+x] for x in range(0,len(lst),chop)]

    вывод будет таким:[[1,2],[3,4],[5,6]]

    #6404 Score: 2

    Евгений
    Участник
    2 pts

    Дико извиняюсь, если я пишу не в тему. Видел функцию flatten для python.

    Мне нравиться больше такая

    import operator

    flattenlist=lambda s: reduce(operator.iadd, s, [])

    OUT = flattenlist(list)

    #6405 Score: 2

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

    Евгений, спасибо!
    Пишешь в правильную тему.
    Для остальных, не забывайте import operator и в данном примере речь идет о вложенности листов = 2, т.е. пример [[1,2,3],[4,5],[7,8]]

    #6852 Score: 4

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

    еще раз в дополнении к http://dynamobim.ru/forums/topic/tips-and-trics-советы-и-приемы/page/4/#post-5082

    if else в генераторе
    пример:

    lst = [1,2,3,4,5,6]
    collection = ["ok" if d == 3 else 0 for d in lst]

    >> [0, 0, ‘ok’, 0, 0, 0]

    #6858 Score: 2

    txt
    Модератор
    90 pts

    + несколько else if 

    inn=[1,2,3,0,1]
    lst=["a" if i==3 else "b" if i==2 else "c" if i==1 else "not exist" for i in inn]
    OUT = lst

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

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