Python - 遍历没有最后一个元素的列表

标签 python list loops tuples enumerate

我有一个元组列表,想创建一个新列表。 新列表的元素是用新列表的最后一个元素(第一个元素为0)和旧列表的下一个元组的第二个元素计算的。

更好地理解:

list_of_tuples = [(3, 4), (5, 2), (9, 1)]  # old list
new_list = [0]
for i, (a, b) in enumerate(list_of_tuples):
  new_list.append(new_list[i] + b)

所以这是解决方案,但是不必计算新列表的最后一个元素。所以不需要最后一个元素。

有没有一种创建新列表的好方法? 到目前为止,我的解决方案是范围,但看起来不太好:

for i in range(len(list_of_tuples)-1):
  new_list.append(new_list[i] + list_of_tuples[i][1])

我是 python 的新手,所以非常感谢任何帮助。

最佳答案

您可以简单地使用 slice notation跳过最后一个元素:

for i, (a, b) in enumerate(list_of_tuples[:-1]):

下面是一个演示:

>>> lst = [1, 2, 3, 4, 5]
>>> lst[:-1]
[1, 2, 3, 4]
>>> for i in lst[:-1]:
...     i
...
1
2
3
4
>>>

关于Python - 遍历没有最后一个元素的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26949090/

相关文章:

python - 将列表传递给Python中的函数时,如何对列表中的元素进行 'hide'?

python - 如何在没有python解释的情况下捕获二进制字符串中的所有字符

javascript - 动态添加到不同的 JS 对象数据 - 在循环或开关等内?

php - 满足条件时如何在 PHP 中中断 for 循环?

python - 如何仅使用查找和替换来查找和计算字符串中子字符串的所有出现次数?

python - 如何在 PySpark 中创建空的 Spark DataFrame 并追加数据?

Python 3.3 序列 key 生成器列表问题

python - 操作两个列表的最简洁方法,在 python 中返回列表列表

java - 如何洗牌对

c++ - 为什么选择 for (;;){} 而不是 while(1)?