向元组中的所有值添加整数

时间:2016-07-20 12:55:49

标签: python python-2.7 tuples

在如下所示的代码中编辑元组的推荐/最pythonic方法是什么?

tup_list = [(1, 2), (5, 0), (3, 3), (5, 4)]
max_tup = max(tup_list)
my_tup1 = (max_tup[0] + 1, max_tup[1] + 1)
my_tup2 = tuple(map(lambda x: x + 1, max_tup))
my_tup3 = max([(x+1, y+1) for (x, y) in tup_list])

上述三种方法中哪一种更受欢迎,或者有更好的方法吗? (当然,在这个例子中应该返回(6, 5)。)

有一种诱惑,比如

my_tup = max(tup_list)[:] + 1

my_tup = max(tup_list) + (1, 1)
但是,这些都不能明显起作用。

2 个答案:

答案 0 :(得分:10)

只需使用tuple的生成器表达式:

my_tup = tuple(x+1 for x in max_tup)
# or my_tup = tuple(x+1 for x in max(tup_list))

答案 1 :(得分:1)

my_tup1 = (max_tup[0] + 1, max_tup[1] + 1)

直接且易于阅读。括号显式表示将创建元组,+表示将修改数字。因此它似乎也是pythonic。

my_tup2 = tuple(map(lambda x: x + 1, max_tup))

采用一种功能方法,但是一个元组被滥用为列表,最后它被转换回一个元组。对于那些不知道python的元组是如何工作的人来说,并不直接。

my_tup3 = max([(x+1, y+1) for (x, y) in tup_list])

使用不变量,如果所有值都增加1,则最大值保持不变。所以你需要绕过它,这段代码比其他方法做得更多。

所以我会选择第一种方法。