print(sgrades_flat)
['Barrett', 'Edan', '70', '45', '59', 'Bradshaw', 'Reagan', '96', '97', '88', 'Charlton', 'Caius', '73', '94', '80', 'Mayo', 'Tyrese', '88', '61', '36', 'Stern', 'Brenda', '90', '86', '45']
print(s_grades)
['F', 'A', 'B', 'D', 'C']
I want to combine sgrades_flat and s_grades to look like ...
['Barrett', 'Edan', '70', '45', '59', 'F',
'Bradshaw', 'Reagan', '96', '97', '88', 'A'
'Charlton', 'Caius', '73', '94', '80', 'B'
'Mayo', 'Tyrese', '88', '61', '36', 'D'
'Stern', 'Brenda', '90', '86', '45', 'C']
My current strategy is to use this code:
z=[]
for i, x in zip(sgrades_flat[::5], s_grades):
z.append(i+x)
print(z)
but that output is:
['BarrettF', 'BradshawA', 'CharltonB', 'MayoD', 'SternC']
I would combine the list by iterating manually on them:
sgrades_flat=['Barrett', 'Edan', '70', '45', '59', 'Bradshaw', 'Reagan', '96', '97', '88', 'Charlton', 'Caius', '73', '94', '80', 'Mayo', 'Tyrese', '88', '61', '36', 'Stern', 'Brenda', '90', '86', '45']
s_grades=['F', 'A', 'B', 'D', 'C']
it1 = iter(sgrades_flat)
it2 = iter(s_grades)
result = []
try:
while True:
for _ in range(5):
result.append(next(it1))
result.append(next(it2))
except StopIteration:
pass
print(result)
prints
['Barrett', 'Edan', '70', '45', '59', 'F',
'Bradshaw', 'Reagan', '96', '97', '88', 'A',
'Charlton', 'Caius', '73', '94', '80', 'B',
'Mayo', 'Tyrese', '88', '61', '36', 'D',
'Stern', 'Brenda', '90', '86', '45', 'C']
(this still looks like a bad idea as a flat list is sub-optimal for such a data structure)
Note that a one-liner without any manual iteration also does the same:
import itertools
grouped_sgrades = list(itertools.chain.from_iterable(
sgrades_flat[i:i+5]+[s_grades[i//5]]
for i in range(0,len(sgrades_flat),5)))
however, why flatten the lists?
grouped_sgrades = [sgrades_flat[i:i+5]+[s_grades[i//5]] for i in range(0,len(sgrades_flat),5)]
result is a nice list of lists, which is approaching some structured data:
[['Barrett', 'Edan', '70', '45', '59', 'F'],
['Bradshaw', 'Reagan', '96', '97', '88', 'A'],
['Charlton', 'Caius', '73', '94', '80', 'B'],
['Mayo', 'Tyrese', '88', '61', '36', 'D'],
['Stern', 'Brenda', '90', '86', '45', 'C']]
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments