Allan, I think I understand, but that type of maths I have not touched in 40 years. Thus why I am not getting the concept. 😊 It was an open question as I had no clue what it was and I should have asked. Lets park the question for now and I will read the references. As I am not sure if this will help my program that I am struggling with.
-----Original Message----- From: Tutor <tutor-bounces+mhysnm1964=gmail....@python.org> On Behalf Of Alan Gauld via Tutor Sent: Friday, 21 June 2019 6:11 PM To: tutor@python.org Subject: Re: [Tutor] collections and mappings On 21/06/2019 01:01, mhysnm1...@gmail.com wrote: > I have reviewed the collection module and do not understand mappings. > I have seen this in other languages and have never got the concept. > Can someone explain this at a very high level. OK. You are a master of the open ended question so I'm not sure what aspect you don't understand. But I'll start at the beginning and take it as far as Python. But you are opening a vary large can of worms... Mappings, in programming terms, are related to a mathematical concept. See Wikipedia for a more detailed account of math mapping. In simplistic terms a mapping comprises two sets of data, one an input the other an output. The map is the set of relationships between input and output. Thus given input of {a, b, c} and output of {1,2,3,4,5} We might have any of several mappings between these. A simple 1:1 mapping might be {a,1}, {b,2}, {c,3} But we can have 1:N or N:1 or N:M mappings too: {a,1,2} {b,3} {c,4} - a 1:N mapping {a,1} {b,1}, {c,3} - an N:1 mapping {a,1,2} {b,2},{c,1,3} - a N:M mapping Note that the mapping does not have to include all of the output elements. The mapping may be arbitrary, as above or it may be defined as a function: {a, f(a)} {b,f(b)} {c,f(c)} Or even as a set of functions... In programming, and particularly in Python, this tends to be represented as a dictionary (or sometimes a class). So the mappings above could be shown as: input = ['a','b','c'] output = [1,2,3] 1_1 = {'a':1,'b':2,'c':3} 1_N = {'a':(1,2)'b':(1,),'c':(3,)} N_1 = {'a':1,'b':1,'c':3} N_M = {'a':(1,2),'b':(2,),'c:(1,3)} def f(x): return x*2 1_f = {'a':f('a'),'b':f('b'),'c':f('c')} List comprehensions and generator expressions are also commonly used to create mappings, especially the functional sort. I have no idea if the addressed any of your questions but if not please ask again, but with something more specific. PS. To the real mathematicians on the list. My math is very rusty, if I've made any major gaffes please feel free to correct/amend my scribblings. -- Alan G Author of the Learn to Program web site http://www.alan-g.me.uk/ http://www.amazon.com/author/alan_gauld Follow my photo-blog on Flickr at: http://www.flickr.com/photos/alangauldphotos _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor