I have a 2D array containing 15 jobs, each job (index) consisting of a list of 3 items (workerA, workerB, workerC). Created by these lines:
letters = ["A","B","C"]
jobs = [[("job_%s_worker%s" % (i, letters[j])) for j in range(3)] for i in range(1,16)]
I want to add a new index to each inner list using list comprehension but don't know how. It can be done with a simple for loop:
for i in range(15):
jobs[i].append(i+1)
Output:
>>> jobs
>>> [['job_1_workerA', 'job_1_workerB', 'job_1_workerC', 1],
['job_2_workerA', 'job_2_workerB', 'job_2_workerC', 2],
['job_3_workerA', 'job_3_workerB', 'job_3_workerC', 3],
['job_4_workerA', 'job_4_workerB', 'job_4_workerC', 4],
['job_5_workerA', 'job_5_workerB', 'job_5_workerC', 5],
['job_6_workerA', 'job_6_workerB', 'job_6_workerC', 6],
['job_7_workerA', 'job_7_workerB', 'job_7_workerC', 7],
['job_8_workerA', 'job_8_workerB', 'job_8_workerC', 8],
['job_9_workerA', 'job_9_workerB', 'job_9_workerC', 9],
['job_10_workerA', 'job_10_workerB', 'job_10_workerC', 10],
['job_11_workerA', 'job_11_workerB', 'job_11_workerC', 11],
['job_12_workerA', 'job_12_workerB', 'job_12_workerC', 12],
['job_13_workerA', 'job_13_workerB', 'job_13_workerC', 13],
['job_14_workerA', 'job_14_workerB', 'job_14_workerC', 14],
['job_15_workerA', 'job_15_workerB', 'job_15_workerC', 15]]
Any ideas?
Here is one way to do so:
letters = ["A","B","C"]
jobs = [[("job_%s_worker%s" % (i, letters[j])) for j in range(3)] + [i] for i in range(1,16)]
print(jobs)
Output:
[['job_1_workerA', 'job_1_workerB', 'job_1_workerC', 1], ['job_2_workerA', 'job_2_workerB', 'job_2_workerC', 2], ['job_3_workerA', 'job_3_workerB', 'job_3_workerC', 3], ['job_4_workerA', 'job_4_workerB', 'job_4_workerC', 4], ['job_5_workerA', 'job_5_workerB', 'job_5_workerC', 5], ['job_6_workerA', 'job_6_workerB', 'job_6_workerC', 6], ['job_7_workerA', 'job_7_workerB', 'job_7_workerC', 7], ['job_8_workerA', 'job_8_workerB', 'job_8_workerC', 8], ['job_9_workerA', 'job_9_workerB', 'job_9_workerC', 9], ['job_10_workerA', 'job_10_workerB', 'job_10_workerC', 10], ['job_11_workerA', 'job_11_workerB', 'job_11_workerC', 11], ['job_12_workerA', 'job_12_workerB', 'job_12_workerC', 12], ['job_13_workerA', 'job_13_workerB', 'job_13_workerC', 13], ['job_14_workerA', 'job_14_workerB', 'job_14_workerC', 14], ['job_15_workerA', 'job_15_workerB', 'job_15_workerC', 15]]
The +
operator concatenate the two lists into one.
If the list is already created, you can add the corresponding index using enumerate()
:
jobs = [element + [i] for i, element in enumerate(jobs, start=1)]
Note:
You can slightly improve your list comprehension by iterating directly over letters
.
jobs = [[("job_%s_worker%s" % (i, char)) for char in letters] + [i] for i in range(1,16)]
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.