fork download
  1. import itertools
  2.  
  3. def find_sublists(seq, sublist):
  4. length = len(sublist)
  5. for index, value in enumerate(seq):
  6. if value == sublist[0] and seq[index:index+length] == sublist:
  7. yield index, index+length
  8.  
  9. def replace_sublist(seq, target, replacement, maxreplace=None):
  10. sublists = list(find_sublists(seq, target))
  11. if maxreplace:
  12. sublists = itertools.islice(sublists, maxreplace)
  13. for start, end in sublists:
  14. seq[start:end] = replacement
  15.  
  16. seq = [3, 5, 10, 3, 5, 10]
  17. target = [3, 5, 10]
  18. replacement = [9, 7]
  19.  
  20. replace_sublist(seq, target, replacement)
  21.  
  22. print(seq)
Success #stdin #stdout 0.02s 28384KB
stdin
Standard input is empty
stdout
[9, 7, 3, 9, 7]