每次子列表列表中的数字切换时计数 [python 3]
count every time a number switches in a list of sublists [python 3]
如果我有一个看起来像这样的列表
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
。
谢谢!
可以考虑差的绝对值
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))
如果我有一个看起来像这样的列表
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
。
谢谢!
可以考虑差的绝对值
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))