Python Forum
Sume Every 10 element in the list and Divided of Sum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Sume Every 10 element in the list and Divided of Sum
#8
(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 Smile.

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


Messages In This Thread
RE: Sume Every 10 element in the list and Divided of Sum - by perfringo - Nov-27-2020, 10:58 AM

Possibly Related Threads…
Thread Author Replies Views Last Post
  element in list detection problem jacksfrustration 5 317 Apr-11-2024, 05:44 PM
Last Post: deanhystad
  list in dicitonary element problem jacksfrustration 3 692 Oct-14-2023, 03:37 PM
Last Post: deanhystad
  Find (each) element from a list in a file tester_V 3 1,205 Nov-15-2022, 08:40 PM
Last Post: tester_V
  Сheck if an element from a list is in another list that contains a namedtuple elnk 8 1,833 Oct-26-2022, 04:03 PM
Last Post: deanhystad
  Membership test for an element in a list that is a dict value for a particular key? Mark17 2 1,208 Jul-01-2022, 10:52 PM
Last Post: Pedroski55
  How to find the second lowest element in the list? Anonymous 3 1,996 May-31-2022, 01:58 PM
Last Post: Larz60+
  check if element is in a list in a dictionary value ambrozote 4 1,963 May-11-2022, 06:05 PM
Last Post: deanhystad
  sorting a list of lists by an element leapcfm 3 1,858 Sep-10-2021, 03:33 PM
Last Post: leapcfm
  Convert each element of a list to a string for processing tester_V 6 5,304 Jun-16-2021, 02:11 AM
Last Post: tester_V
  Counting Element in Multidimensional List quest_ 1 2,099 Nov-25-2020, 10:00 PM
Last Post: quest_

Forum Jump:

User Panel Messages

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