Я хочу найти все 5-значные строки, для которых < /p>
[*] Первые три цифры находятся в моем первом списке, < /li>
Второй четвертый четвертый находится во втором и < /li>
Третий по пятый находится в моем последнем списке: < /li>
< /ul>
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
< /code>
Я знаю, что могу написать его как понимание списка, но для моих первоначальных данных у меня есть более вложенные списки, и я потерял читаемость даже в понимании списка. /li>
Я начинаю с L2 -> l0 , потому что в моих исходных данных списки становятся длиннее, тем ниже индекс, и поэтому я могу отфильтровать больше случаев на раннем этапе .
Один развод с одним циклом все комбинации L0, L1, L2 и проверка последовательности всех элементов A, B, C одновременно будет работать, но тест на него Гораздо более ненужные комбинации, чем моя текущая конструкция. Можно ли абстрагировать этот вложенный цикл и условная проверка? Есть ли питонический способ захватить повторение для -> is_successor () ?
Больший вход может быть:
primes = [2, 3, 5, 7, 11, 13, 17]
lsts=[
[
str(j).zfill(3)
for j in range(12,988)
if not j%prime
]
for prime in primes
]
Подробнее здесь: https://stackoverflow.com/questions/788 ... catenation
Pythonic подход, чтобы избежать вложенных петлей для конкатенации струны ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Pythonic подход, позволяющий избежать вложенных циклов для конкатенации строк
Anonymous » » в форуме Python - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как зацикливаться на предметах внутри нескольких вложенных петлей Foreach в Blazor
Anonymous » » в форуме C# - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-