функция max () с циклами for - PullRequest
0 голосов
/ 09 октября 2019

В настоящее время я изучаю эту проблему в магазине вакансий от Google OR-Tools, и мне нужна ваша помощь, чтобы понять эту проблему,

jobs_data = [  # task = (machine_id, processing_time).
        [(0, 3), (1, 2), (2, 2)],  # Job0
        [(0, 2), (2, 1), (1, 4)],  # Job1
        [(1, 4), (2, 3)]  # Job2
    ]

    machines_count = 1 + max(task[0] for job in jobs_data for task in job)
    all_machines = range(machines_count)

Я хочу понять эту строку:

machines_count = 1 + max(task[0] for job in jobs_data for task in job)

Спасибо.

Ответы [ 2 ]

3 голосов
/ 09 октября 2019

task[0] for job in jobs_data for task in job можно перевести в следующие

new_list = []

for job in jobs_data: # for each Job
    for task in job: # for each task 
        print(task[0]) 
        new_list.append(task[0]) # get the id

max(), просто выберите максимум.

0 голосов
/ 09 октября 2019

Строка, на которую вы ссылаетесь, может быть переведена в следующий (надеюсь, более понятный) код:

count = []
for job in jobs_data:          #job is a list of tuples
    for task in job:           #task is one tuple
        count.append(task[0])  #task[0] is the first item of the tuple

machines_count = 1 + max(count)
...