Python - создайте группу списков, используя числа
Скажем, у меня есть строка n = '22' и другое число a = 4, так что n - это str, а a - это int. Я хотел бы создать группу списков, таких как:
list1 = [22, 12, 2] #decreasing n by 10, the last item must be single digit, positive or 0
list2 = [22, 11, 0] #decreasing n by 11, last item must be single digit, positive or 0
list3 = [22, 21, 20] #decreasing n by 1, last item must have last digit 0
list4 = [22, 13] #decreasing n by 9, last item must be single digit. if last item is == a, remove from list
list5 = [22, 32] #increasing n by 10, last item must have first digit as a - 1
list6 = [22, 33] #increasing n by 11, last item must have first digit as a - 1
list7 = [22, 23] #increasing n by 1, last item must have last digit a - 1
list8 = [22, 31] #increasing n by 9, last item must have first digit a - 1
Я борюсь за то, чтобы начать это. Может быть, вы можете дать мне представление о том, как подойти к этой проблеме?
Кстати, если условие не может быть выполнено, то в этом списке будет только n. скажем n = '20', a = 4:
list3 = [20]
Также это для школьного проекта, для индексов в списке, который имеет элементы списка. Я не могу придумать лучшего способа подойти к проблеме.
1 ответ
Решение
Это должно помочь вам начать:
def lbuild( start, inc, test ):
rslt = [start]
while not test(start,inc):
start += inc
rslt.append( start )
return rslt
n = '22'
a = 4
nval = int(n)
print lbuild( nval, -10, lambda(x,y): (x<10 and x>=0) )
print lbuild( nval, 1, lambda(x,y): x%10 == a-1 )