считать каждый раз, когда число переключается в списке подсписков [python 3] - PullRequest
0 голосов
/ 12 января 2020

Если у меня есть список, который выглядит примерно так

my-list = [[1, 0, 0, 1], [1, 0]]

и если я хочу считать каждый раз, когда элементы меняют значения. Например, если мы определяем переменную с именем counter,

counter = 0

и каждый раз каждый элемент подсписка изменяется на что-то другое (либо из 1 -> 0, либо из 0 -> 1), counter увеличивается.

Если мы посмотрим на my-list сверху, первый и второй элемент с my-list[0] переходит с 1 на 0, поэтому counter увеличивается с +1. Второй и третий элементы my-list[0] - это 0 и 0, и, поскольку значения не изменились, приращение counter не происходит. Но третий и четвертый элементы my-list[0] идут от 0 до 1, поэтому происходит другое приращение.

И затем мы начинаем это во втором подсписке, my-list[1]. Первое и второе значения my-list[1] различны (изменяется от 1 до 0), поэтому counter увеличивается в третий раз. Если мы посмотрим на конечный результат,

print(counter)
>>> 3

3, это ответ, который я ищу my-list.

Спасибо!

1 Ответ

1 голос
/ 12 января 2020

Можно считать абсолютное значение разности

sum(abs(l[i]-l[i+1]) for l in my_list for i in range(len(l)-1))

или, если они не состоят только из 1s и 0s

sum(1 if l[i] != l[i+1] else 0  for l in my_list for i in range(len(l)-1))
...