Chris Angelico wrote: > Rusty Scalf wrote: >> list1 = ['pig', 'horse', 'moose'] >> list2 = ['62327', '49123', '79115'] >> n = 2 >> s2 = "list" + `n`
I would prefer the clearer s2 = "list" + str(n) or s2 = "list%s" % n >> a = s2[list1.index('horse')] >> print a > > s2 is a string with the value "list2"; this is not the same as the > variable list2. You could use eval to convert it, but you'd do better > to have a list of lists: > > lists = [ > ['pig', 'horse', 'moose'] > ['62327', '49123', '79115'] > ] You forgot a comma after the first `]', to separate the list elements. A way to reuse the existing code is lists = [list1, list2] > Then you could use: > n = 2 > a = lists[n][list1.index('horse')] That would throw an IndexError exception, though, since list indexes are 0-based, and this list has only two items (so the highest index is 1, not 2). But even if this was fixed, this could still throw a ValueError exception if there was no 'horse' in `list1'. While you could catch that – needle = 'horse' try: a = lists[n][list1.index(needle)] except ValueError: a = 'N/A' – perhaps a better way to store this data is a dictionary: data = { 'pig': '62327', 'horse': '49123', 'moose': '79115' } print data.get('horse') print data.get('cow') print data.get('cow', 'N/A') Such a dictionary can be built from the existing lists as well: data = dict(zip(list1, list2)) print data print data.get('horse', 'N/A') HTH -- PointedEars -- http://mail.python.org/mailman/listinfo/python-list