таким образом должно получиться: ['12348', '12399'].
Поэтому я написал функцию is_successor(a, b), который проверяет, перекрываются ли a и b:
def is_successor(a:str,b:str)->bool:
"""tests if strings a and b overlap"""
return a[1:]==b[:2]
Затем я могу достичь своей цели, написав эту вложенную структуру цикла/проверки, которая в основном добавляется обратно к передним строкам и в результате дает все действительные строки:
pres=[]
for c in l2:
for b in l1:
if is_successor(b,c):
for a in l0:
if is_successor(a,b):
pres.append(a[0]+b[0]+c)
pres
Я знаю, что мог бы написать это как понимание списка, но для моих исходных данных у меня больше вложенных списков, и я теряю читабельность даже при понимании списка.< /li>
Я начинаю с l2 -> l0, потому что в моих исходных данных списки становятся длиннее, чем ниже индекс, и, таким образом, я могу отфильтровать больше случаев раньше, таким образом .
Один цикл по всем комбинациям l0,l1,l2 и проверка последовательности всех элементов a,b,c одновременно будет работать, но это проверка гораздо больше ненужных комбинаций, чем в моей нынешней конструкции.
Вопрос:
Как можно ли отвлечь этот вложенный цикл и вызов условной проверки? Есть ли питонический способ зафиксировать повторение for -> is_successor()?
Более крупный ввод может быть:
primes=[2,3,5,7,11,13,17]
lsts=[
[
str(j).zfill(3)
for j in range(12,988)
if not j%primes
]
for i in range(len(primes))
]
Я хочу найти все 5-значные строки, для которых [list] [*]первые три цифры находятся в моем первом списке, [*]со второго по четвёртый список — во втором, а [*]с третьего по пятый — в последнем списке: [/list] l0=["123","567","451"] l1=["234","239","881"] l2=["348","551","399"]
таким образом должно получиться: ['12348', '12399']. Поэтому я написал функцию is_successor(a, b), который проверяет, перекрываются ли a и b: def is_successor(a:str,b:str)->bool: """tests if strings a and b overlap""" return a[1:]==b[:2]
Затем я могу достичь своей цели, написав эту вложенную структуру цикла/проверки, которая в основном добавляется обратно к передним строкам и в результате дает все действительные строки: pres=[] for c in l2: for b in l1: if is_successor(b,c): for a in l0: if is_successor(a,b): pres.append(a[0]+b[0]+c)
pres
[list] [*]Я знаю, что мог бы написать это как понимание списка, но для моих исходных данных у меня больше вложенных списков, и я теряю читабельность даже при понимании списка.< /li> Я начинаю с l2 -> l0, потому что в моих исходных данных списки становятся длиннее, чем ниже индекс, и, таким образом, я могу отфильтровать больше случаев раньше, таким образом . [*]Один цикл по всем комбинациям l0,l1,l2 и проверка последовательности всех элементов a,b,c одновременно будет работать, но это проверка гораздо больше ненужных комбинаций, чем в моей нынешней конструкции. [/list] [b]Вопрос[/b]: Как можно ли отвлечь этот вложенный цикл и вызов условной проверки? Есть ли питонический способ зафиксировать повторение for -> is_successor()? Более крупный ввод может быть:
primes=[2,3,5,7,11,13,17]
lsts=[ [ str(j).zfill(3) for j in range(12,988) if not j%primes[i] ] for i in range(len(primes)) ]
Я написал программу, которая по сути читает файл, обрабатывает его записи для извлечения некоторых данных с помощью сторонней библиотеки, а затем отправляет данные на удаленный сервер.
Для ускорения В процессе я создаю вызываемые задачи, которые...
Правильно ли совмещать функции покупателя и продавца в одном приложении? Подскажите мне, как лучше всего объявить навигацию для них обоих, а также вся навигация заключена в каркас нижней навигации.
И я использую этот каркас для отображения нижней...
Предположим, у меня есть список/кортеж строк
COLOURS =
for c in COLOURS:
# rest of the code
Иногда я забываю поставить запятую после каждой записи в списке ( Red в приведенном выше фрагменте). В результате получается один RedGreen вместо двух...