【问题标题】:count every time a number switches in a list of sublists [python 3]每次在子列表列表中切换一个数字时计数[python 3]
【发布时间】:2020-04-29 02:37:04
【问题描述】:

如果我有一个类似这样的列表

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

如果我想在每次元素更改值时进行计数。例如,如果我们定义一个名为counter的变量,

counter = 0

每次子列表的每个元素都变成不同的东西(从 1-->0 或 0-->1),counter 递增。

如果我们从上面看my-listmy-list[0] 的第一个和第二个元素从10,所以counter 递增+1。 my-list[0] 的第二个和第三个元素是00,由于值没有改变,counter 的增量不会发生。但是my-list[0] 的第三个和第四个元素从​​0 变为1,因此发生了另一个增量。

然后我们在第二个子列表my-list[1] 中重新开始。 my-list[1] 的第一个和第二个值不同(从1 变为0),所以counter 第三次递增。如果我们看一下最终的结果,

print(counter)
>>> 3

3,是我正在寻找的答案my-list

谢谢!

【问题讨论】:

    标签: python python-3.x python-3.6


    【解决方案1】:

    可以考虑差值的绝对值

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

    或者如果它们不只包含 1s0s

    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],[0,1]],则会引入不需要的增量,不需要的增量在my-list[0][3]my-list[1][0]之间
    • 已更新,以便不考虑子列表的结尾和下一个的开头
    猜你喜欢
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 1970-01-01
    • 2021-10-08
    相关资源
    最近更新 更多