##### Sume Every 10 element in the list and Divided of Sum
 Sume Every 10 element in the list and Divided of Sum quest_ Silly Frenchman Posts: 39 Threads: 11 Joined: Nov 2020 Reputation: Nov-26-2020, 04:22 PM Hello I have this list b = [0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,01,0,1,0,1,0,1,0,1,0,1,0,1] And I want to sum every 10 element in the list after that I want to divide first 10 element with first sum, devide second then element with the second time... I can find the sum every 10 element with this code `b= [sum(randomlist[i:i+10]) for i in range(0, len(randomlist), 10)]`But after that I really don't know how can I divide them For instance for the example,sum of first 10 element is 5 and so the element should change like that: b = [0,0.2,0,0.2,0,0.2,0,0.2,0,0.2010101010101010101010101010101] and so on.. Thanks for helps Reply Posts: 1,759 Threads: 8 Joined: Jun 2018 Reputation: Nov-26-2020, 05:33 PM There are some ambiguity for me: - sum every 10 element in the list - does this mean that sum on ten-item chunks is needed? What should happen if the number of items in list is not divisible by 10? - divide first 10 element with first sum - what does it mean? I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame. Reply quest_ Silly Frenchman Posts: 39 Threads: 11 Joined: Nov 2020 Reputation: Nov-26-2020, 09:30 PM (Nov-26-2020, 05:33 PM)perfringo Wrote: There are some ambiguity for me: - sum every 10 element in the list - does this mean that sum on ten-item chunks is needed? What should happen if the number of items in list is not divisible by 10? - divide first 10 element with first sum - what does it mean? Hello, Thanks for the answer! 1) do not worry number of elements in my list will be always divided by 10 Suppose that I have 30 elements in my array 2) once we find the sum of every 10 element, suppose that the first sum will be 20, second sum will be 10, and third some will be 12 then first 10 elements will be divided by 20 and second ten elements will be divided by 10 and third ten element will be divided by 12 You can look at the example, I explained it in my question Reply deanhystad So-and-so of the Yard Posts: 2,147 Threads: 11 Joined: Feb 2020 Reputation: Nov-26-2020, 11:03 PM A generator that will do this ```def divbysum(items, step=10): s=1 for i, value in enumerate(items): if i % step == 0: s = sum(items[i:i+step]) yield value/s source = list(range(20)) result = [x for x in divbysum(source, 5)] print(result)``` Reply quest_ Silly Frenchman Posts: 39 Threads: 11 Joined: Nov 2020 Reputation: Nov-26-2020, 11:12 PM (Nov-26-2020, 11:03 PM)deanhystad Wrote: A generator that will do this ```def divbysum(items, step=10): s=1 for i, value in enumerate(items): if i % step == 0: s = sum(items[i:i+step]) yield value/s source = list(range(20)) result = [x for x in divbysum(source, 5)] print(result)```Thank you very much for the answer. I have a question Why do we have 5 in this line `result = [x for x in divbysum(source, 5)]` Reply deanhystad So-and-so of the Yard Posts: 2,147 Threads: 11 Joined: Feb 2020 Reputation: Nov-26-2020, 11:14 PM Because I wanted to test with summing different sized slices and the last test I did was 5 numbers at a time. Reply quest_ Silly Frenchman Posts: 39 Threads: 11 Joined: Nov 2020 Reputation: Nov-26-2020, 11:22 PM (Nov-26-2020, 11:14 PM)deanhystad Wrote: Because I wanted to test with summing different sized slices and the last test I did was 5 numbers at a time. Thank you very much now I run and see It is a great answer Reply Posts: 1,759 Threads: 8 Joined: Jun 2018 Reputation: Nov-27-2020, 10:58 AM (This post was last modified: Nov-27-2020, 10:58 AM by perfringo.) (Nov-26-2020, 09:30 PM)quest_ Wrote: do not worry number of elements in my list will be always divided by 10 I am not the one who should be worrying . So, I do not worry and ignore items which don't fit into group of 10 items (i.e. if there is 31 items only 30 are considered and last one will be ignored). My approach would be to create grouper generator function in a such way that it ignores items at the end not fitting into groupsize (don't worry, be happy): ```def grouper(iterable, groupsize): args = [iter(iterable)] * groupsize yield from zip(*args)```Now I can call it with needed groupsize and perform calculations on groups as I see fit. I can create another helper function to perform some magic needed: ```def group_magic(group): return [item / sum(group) for item in group]```Now I am ready to do some group_magic: `[group_magic(group) for group in grouper(b, 10)]`Of course, if one wants to hide magic from user, it all can be put into one function: ```def do_magic(iterable, groupsize): def grouper(iterable, groupsize): args = [iter(iterable)] * groupsize yield from zip(*args) def group_magic(group): yield from (item / sum(group) for item in group) return [[*group_magic(group)] for group in grouper(iterable, groupsize)] print(do_magic(b, 10)) -> [[0.0, 0.2, 0.0, 0.2, 0.0, 0.2, 0.0, 0.2, 0.0, 0.2], [0.0, 0.2, 0.0, 0.2, 0.0, 0.2, 0.0, 0.2, 0.0, 0.2], [0.0, 0.2, 0.0, 0.2, 0.0, 0.2, 0.0, 0.2, 0.0, 0.2], [0.0, 0.2, 0.0, 0.2, 0.0, 0.2, 0.0, 0.2, 0.0, 0.2]]```Then I can look at this code and say 'nah, i don't actually need those inner functions. It's too obvious what is going on, let's do some obfuscation' and write this (it returns the same as do_magic): ```def do_magic_2(iterable, groupsize): groups = zip(*[iter(iterable)] * groupsize) operations = ((item / sum(group) for item in group) for group in groups) return [[*operation] for operation in operations]``` I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame. Reply

 Possibly Related Threads… Thread Author Replies Views Last Post Convert each element of a list to a string for processing tester_V 6 561 Jun-16-2021, 02:11 AM Last Post: tester_V Counting Element in Multidimensional List quest_ 1 484 Nov-25-2020, 10:00 PM Last Post: quest_ Adding List Element if Second part of the List Elements are the Same quest_ 3 631 Nov-25-2020, 04:33 PM Last Post: bowlofred Removing element from list squall 6 827 Nov-22-2020, 09:34 PM Last Post: jefsummers 2d Array adds last element to entire list waiteup 2 503 Nov-19-2020, 08:25 PM Last Post: bowlofred How to get index of minimum element between 3 & 8 in list Mekala 2 789 Nov-10-2020, 12:56 PM Last Post: DeaD_EyE Problem printing last element from a list tester_V 3 762 Oct-30-2020, 04:54 AM Last Post: tester_V Finding an element in a 1d list in a 2d array lionrocker221 0 653 Jun-27-2020, 04:50 PM Last Post: lionrocker221 removing dictionary element in list using (key, value) MelonMusk 3 804 Jun-13-2020, 02:37 PM Last Post: buran using element on a list as condition statement glennford49 11 1,688 May-21-2020, 12:53 PM Last Post: hussainmujtaba

Forum Jump:

### User Panel Messages

##### Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020