Tips and tricks (Советы и приемы)
Главная › Форумы › Python › Синтаксис и родные библиотеки Python › Tips and tricks (Советы и приемы)
- В этой теме 67 ответов, 9 участников, последнее обновление 6 лет, 3 месяца назад сделано Анатолий.
-
АвторСообщения
-
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 если входной лист пуст или лист, если содержит элементыShift+Delete – удаляет строку в редакторе Python (Dynamo) (без необходимости её выделения).
Разделение текста с отсчетом справа записывается как rsplit()
text = “word1.word2.txt” # пример файла, где в названии есть точка
text.rsplit(“.”, 1) # где 1 – один разрез по точке “.”
>>>[‘word1.word2’, ‘txt’] # в итоге получаем список, где [0] элемент списка – имя файла, а [1] – его расширениеtext = “word1.txtword2.txt”
print text.endswith(“.txt”) # заканчивается ли текст на “.txt” ? лучше чем if “.txt” in text
>>> True
print text.startswith(“word”) # начинается ли текст со слова “word”
>>TrueС помощью предварительно нажатой клавиши Shift можно переподключить группу соединений к другому выходному порту.
С помощью предварительно нажатой клавиши Shift можно переподключить группу соединений к другому выходному порту.
Это в 1.3 версии?
да
(в версии 1.2.3 я не проверял)Олег показал пример перевода числа в строку с помощью короткой записи на python
OUT=('{}'.format(i) for i in IN[0])
конвертация int в byte, например для Revit Color
import clr
clr.AddReference('RevitAPI')
import Autodesk.Revit.DB.Color as rColor
import System.Convert as conrgb = [125, 25, 0] # [R, G, B]
OUT = rColor(con.ToByte(rgb[0]), con.ToByte(rgb[1]), con.ToByte(rgb[2]))псевдо 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]]
еще раз в дополнении к 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]
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.
Comments: 491