Когда кортеж пройдет, удалите все похожие из списка.Если кортеж не удался, попробуйте следующий - PullRequest
0 голосов
/ 16 февраля 2019

Я чувствую, что у меня есть все части этого велосипеда, кроме сиденья и руля.И с моим пониманием этого языка у меня еще нет названия «сиденье» и «руль», кроме «вещь для рук, которая вращает колесо» и «мы должны стоять, чтобы ездить на этой вещи?»

У меня есть список, который содержит кортежи ID, цели и тега.Идентификатор и цель объединены в пару и используются для очереди заданий, которая может привести к пропуску или неудаче.

Если идентификатор пройдет, я бы хотел, чтобы все другие кортежи, содержащие этот идентификатор, были удалены из списка, что позволитобновленный список для продолжения итерации.Если идентификатор не удался, я бы хотел, чтобы только этот попытавшийся идентификатор и его элементы кортежа были удалены из списка - чтобы у того же идентификатора (кортежей, содержащих этот идентификатор) была возможность попробовать другую цель.

НижеЯ опубликовал желаемые результаты, одну из множества попыток кодирования и пару других сообщений StackOverflow, относящихся к этой проблеме.Моя попытка кодирования, вероятно, неудачная попытка решить проблему.Мое понимание понимания списка ограничено, но я чувствую, что это может быть полезно здесь.Я также подумал об использовании словаря.

Смежные вопросы:

Попытка кодирования

s,m,l = ("s","m","l")

list = [(11, '853', s), (12, '853', s), (13, '853', m),
 (11, '421', l), (12, '421', l), (13, '421', s)]

passlist=[]
faillist=[]

jobfail = 13
jobpass = 11

def process(list):
 for e in list:
  if jobfail in e:
   print("jobfail:", e)
   faillist.append(e)
   list.pop()
   continue
  if jobpass in e:
   print("jobpass:", e)
   passlist.append(e)
   list.pop()
  print("list is now:", list)
 return passlist,faillist

print("original list:", list)
process(list)
print("passlist:", passlist)
print("faillist:", faillist)
print("final list:", list)

Желаемые результаты

('original list:', [(11, 853, 's'), (12, 853, 's'), (13, 853, 'm'), (11, 421, 'large'), (12, 421, 'large'), (13, 421, 's')])

Processing 11 -> 853
('jobpass:', (11, 853, 's'))
('passlist:', [(11, 853, 's')])
('faillist:', [])
Any tuple with id = 11 is removed:
('list is now:', [(12, 853, 's'), (13, 853, 'm'), (12, 421, 'large'), (13, 421, 's')])

Processing 12 -> 853
('jobpass:', (12, 853, 's'))
('passlist:', [(11, 853, 's'), (12, 853, 's')])
('faillist:', [])
Any tuple with id = 12 is removed:
('list is now:', [(13, 853, 'm'), (13, 421, 's')])

Processing 13 -> 853
('jobfail:', (13, 853, 'm'))
('passlist:', [(11, 853, 's'), (12, 853, 's')])
('faillist:', [(13, 853, 'm')])
We had a failure, so let's try the next pairing:
('list is now:', [(13, 421, 's')])

Processing 13 -> 421
('jobpass:', (13, 421, 's'))
('passlist:', [(11, 853, 's'), (12, 853, 's'), (13, 421, 's')])
('faillist:', [(13, 853, 'm')])
('list is now:', [])
...