Reputation: 630
I have a list as follows.
def getCols(x_):
return [f'{x_}_{str(i).zfill(2)}_{str(j).zfill(2)}' for i in range(1, 6) for j in range(1, 13)]
a = getCols('abc')
I need the output to be:
out = [('abc_01_01', 'abc_01_02'), ('abc_01_02', 'abc_01_03'), ('abc_01_03', 'abc_01_04'), ('abc_01_04', 'abc_01_05') ('abc_01_05', 'abc_01_06'), ('abc_01_06', 'abc_01_07') ('abc_01_07', 'abc_01_08'), ('abc_01_08', 'abc_01_09') ('abc_01_09', 'abc_01_10'), ('abc_01_10', 'abc_01_11') ('abc_01_11', 'abc_01_12'),
('abc_02_01', 'abc_02_02'), ('abc_02_02', 'abc_02_03'), ('abc_02_03', 'abc_02_04'), ('abc_02_04', 'abc_02_05') ('abc_02_05', 'abc_02_06'), ('abc_02_06', 'abc_02_07') ('abc_02_07', 'abc_02_08'), ('abc_02_08', 'abc_02_09') ('abc_02_09', 'abc_02_10'), ('abc_02_10', 'abc_02_11') ('abc_02_11', 'abc_02_12')]
There are no combinations such as ('abc_01_12', 'abc_02_01') and ('abc_02_12', 'abc_03_01')
Upvotes: 0
Views: 63
Reputation: 587
How about this,
def getCols(x_):
max_i = 6
max_j = 13
return [(f'{x_}_{str(i).zfill(2)}_{str(j).zfill(2)}', f'{x_}_{str(i).zfill(2)}_{str(j+1).zfill(2)}') for i in range(1, max_i) for j in range(1, max_j) if j < max_j - 1]
Or
def getCols(x_):
max_i = 6
max_j = 13
out = []
for i in range(1, max_i):
for j in range(1, max_j):
if j < max_j - 1:
out.append((f'{x_}_{str(i).zfill(2)}_{str(j).zfill(2)}', f'{x_}_{str(i).zfill(2)}_{str(j+1).zfill(2)}'))
return out
a = getCols('abc')
Upvotes: 1
Reputation: 2518
def getCols(x_):
return [f'{x_}_{str(i).zfill(2)}_{str(j).zfill(2)}' for i in range(1, 6) for j in range(1, 13)]
a = getCols('abc')
print([(x,y) for x,y in zip(a,a[1:])])
[('abc_01_01', 'abc_01_02'), ('abc_01_02', 'abc_01_03'), ('abc_01_03', 'abc_01_04'), ('abc_01_04', 'abc_01_05'), ('abc_01_05', 'abc_01_06'), ('abc_01_06', 'abc_01_07'), ('abc_01_07', 'abc_01_08'), ('abc_01_08', 'abc_01_09'), ('abc_01_09', 'abc_01_10'), ('abc_01_10', 'abc_01_11'), ('abc_01_11', 'abc_01_12'), ('abc_01_12', 'abc_02_01'), ('abc_02_01', 'abc_02_02'), ('abc_02_02', 'abc_02_03'), ('abc_02_03', 'abc_02_04'), ('abc_02_04', 'abc_02_05'), ('abc_02_05', 'abc_02_06'), ('abc_02_06', 'abc_02_07'), ('abc_02_07', 'abc_02_08'), ('abc_02_08', 'abc_02_09'), ('abc_02_09', 'abc_02_10'), ('abc_02_10', 'abc_02_11'), ('abc_02_11', 'abc_02_12'), ('abc_02_12', 'abc_03_01'), ('abc_03_01', 'abc_03_02'), ('abc_03_02', 'abc_03_03'), ('abc_03_03', 'abc_03_04'), ('abc_03_04', 'abc_03_05'), ('abc_03_05', 'abc_03_06'), ('abc_03_06', 'abc_03_07'), ('abc_03_07', 'abc_03_08'), ('abc_03_08', 'abc_03_09'), ('abc_03_09', 'abc_03_10'), ('abc_03_10', 'abc_03_11'), ('abc_03_11', 'abc_03_12'), ('abc_03_12', 'abc_04_01'), ('abc_04_01', 'abc_04_02'), ('abc_04_02', 'abc_04_03'), ('abc_04_03', 'abc_04_04'), ('abc_04_04', 'abc_04_05'), ('abc_04_05', 'abc_04_06'), ('abc_04_06', 'abc_04_07'), ('abc_04_07', 'abc_04_08'), ('abc_04_08', 'abc_04_09'), ('abc_04_09', 'abc_04_10'), ('abc_04_10', 'abc_04_11'), ('abc_04_11', 'abc_04_12'), ('abc_04_12', 'abc_05_01'), ('abc_05_01', 'abc_05_02'), ('abc_05_02', 'abc_05_03'), ('abc_05_03', 'abc_05_04'), ('abc_05_04', 'abc_05_05'), ('abc_05_05', 'abc_05_06'), ('abc_05_06', 'abc_05_07'), ('abc_05_07', 'abc_05_08'), ('abc_05_08', 'abc_05_09'), ('abc_05_09', 'abc_05_10'), ('abc_05_10', 'abc_05_11'), ('abc_05_11', 'abc_05_12')]
Upvotes: 0
Reputation: 384
Why don't you just make a column list directly?
def getCols(x_):
return [(f'{x_}_{str(i).zfill(2)}_{str(j).zfill(2)}', f'{x_}_{str(i).zfill(2)}_{str(j + 1).zfill(2)}') for i in range(1, 6) for j in range(1, 12)]
Upvotes: 0