title: How to randomize a list to meet conditions
body: <p>I would like to generate n randomized versions of a list such that with each randomization the ordering is different from the one before and also each element must have a different position than in the list before. I have generated a list of all possible permutations of the list but I am stuck on how to select the sub-lists that match my conditions. I am thinking maybe a list comprehension could work but not sure how to complete it.</p>
  
  <pre><code># constraints: n &lt;= 12
  
  lst = ['John', 'William', 'Michael', 'Victor', 'Tom', 'Charley', 'Patrick', 'David']
  
  permutations = list(itertools.permutations(lst))
  
  randomized_lists = [i for i in permutations if &lt;conditions&gt;]
  </code></pre>
  
  <p>Any ideas how this could be done? Also, is there a better (more efficient) approach to the problem?</p>