0

I need to restructure some lists in python and I'm struggling to get the for loops right.


original_lists = [
    ['item1', 'item2', 'item3', 'item4'],
    ['item5', 'item6', 'item7', 'item8'],
    ['item9', 'item10', 'item11', 'item12'],
    ['item13', 'item14', 'item15', 'item16'],
    ['item17', 'item18', 'item19', 'item20'],
    ]

for each list in original lists, i'd like to move items based on their index and move them to a new list (or create a new list)

eg


new_lists= [
    ['item1', 'item5', 'item9', 'item13', 'item17'],
    ['item2', 'item6', 'items10', 'item14', 'item18'], 
    ['item3', 'item7', 'items11', 'item15', 'item19'],
    ['item4', 'item8', 'items12', 'item16', item20'],
    [
KevOMalley743
  • 551
  • 3
  • 20

1 Answers1

1

You should use zip()

original_lists = [
    ['item1', 'item2', 'item3', 'item4'],
    ['item5', 'item6', 'item7', 'item8'],
    ['item9', 'item10', 'item11', 'item12'],
    ['item13', 'item14', 'item15', 'item16'],
    ['item17', 'item18', 'item19', 'item20'],
    ]
new_l=[list(i) for i in zip(*original_lists)]
print(new_l)
  • here is a problem in your solution, if elements increase or decrease from any row, it will not work properly. for example, add `item21` after `item20`, now see the result. – Jafoor Jul 29 '21 at 12:20