我正在使用1个元组,我想创建我正在使用的元组的4个元组变体。例如:
a=(x,y)
我想制作
b=(x+1,y)
c=(x,y+1)
等 等
由于我无法更改元组,有关如何执行此操作的任何想法吗?
答案 0 :(得分:3)
虽然您无法修改现有元组,但您可以根据现有元组的值创建新元组。我认为这样的事情可能就是你想要的:
>>> a = (1, 2)
>>> [(a[0]+dx, a[1]+dy) for dx, dy in [(-1, 0), (1, 0), (0, 1), (0, -1)]]
[(0, 2), (2, 2), (1, 3), (1, 1)]
这会创建四个元组,每个元组使用列表推导在任一方向上移动x
或y
。
答案 1 :(得分:0)
你是说这个?
b=(a[0]+1,a[1])
c=(a[0],a[1]+1)
答案 2 :(得分:0)
def next_to(t, min_x=0, max_x=4, min_y=0, max_y=4):
x,y = t
for dx,dy in [(-1,0), (1,0), (0,-1), (0,1)]:
if (min_x <= x+dx < max_x) and (min_y <= y+dy < max_y):
yield (x+dx, y+dy)
for t in next_to( (2,2) ):
print t
结果
(1, 2)
(3, 2)
(2, 1)
(2, 3)