【问题标题】:How iterate through tuple and range如何遍历元组和范围
【发布时间】:2020-05-14 21:27:36
【问题描述】:

我正在尝试遍历元组和范围,以便在打印时将范围 numbers 添加到元组中。

for mt in range(1, 8):
    print(mt)

my_tuple = (("ben", "monday"),("john", "tuesday"),("steve", "wednesday"),("Isaac","thursday"),("van", "friday"),("tom", "saturday"),("bryan","sunday"))

for row in my_tuple:
    print(row)

这是预期的结果

(1, 'ben', 'monday')
(2, 'john', 'tuesday')
(3, 'steve', 'wednesday')
(4, 'Isaac', 'thursday')
(5, 'van', 'friday')
(6, 'tom', 'saturday')
(7, 'bryan', 'sunday')

【问题讨论】:

  • 您不能更改元组。它已被编入索引。

标签: python tuples range


【解决方案1】:

可以使用enumerate获取行的索引:

list_of_tuples = [("ben", "monday"),("john", "tuesday"),("steve", "wednesday"),("Isaac","thursday"),("van", "friday"),("tom", "saturday"),("bryan","sunday")]

for i, row in enumerate(list_of_tuples, 1):
    print((i, *row))

【讨论】:

  • 或许向初学者澄清一下:第二个参数1 是从哪里开始的索引。默认情况下,索引从 0 开始,但您可以将其更改为您想要的数字。
【解决方案2】:

通过使用列表推导:

my_tuple = (("ben", "monday"),("john", "tuesday"),("steve", "wednesday"),("Isaac","thursday"),("van", "friday"),("tom", "saturday"),("bryan","sunday"))

print([(i+1, t[0], t[1]) for i, t in enumerate(my_tuple)])

# [(1, 'ben', 'monday'), (2, 'john', 'tuesday'), (3, 'steve', 'wednesday'), (4, 'Isaac', 'thursday'), (5, 'van', 'friday'), (6, 'tom', 'saturday'), (7, 'bryan', 'sunday')]

更新:或者更好,如 cmets 中所述:

[(i, *t) for i, t in enumerate(my_tuple, 1)]

【讨论】:

  • 使用enumerate(my_tuple, 1) 比为每个单独的项目使用i+1 更有效。
  • 是的,这是真的。
猜你喜欢
  • 2021-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-23
  • 2018-04-07
  • 2017-03-26
  • 1970-01-01
相关资源
最近更新 更多