Mike wrote: > Hello everyone, > > I was wondering if someone could show me a better way to achieve what > I am trying to do. Here is my test code: > > d=[] > c="00" > a="A,B,C,D" > b=a.split(',') > for item in b: > d.append(item) > d.append(c) > print tuple(d) > > Basically what I want to end up with is a tuple that looks like this: > ("A","00","B","00","C","00")... > > As you can see I want to insert 00 in-between each element in the > list. I believe this could be done using a list comprehension? > > I realize I achieved my goal, but I was wondering what other > alternates could be done to achieve the same results. > > Thanks in advance for your assistance.
I think your code is straight-forward, and that's a virtue. I suggest you keep it and just factor out the loop: >>> def interleave(items, separator): ... for item in items: ... yield item ... yield separator ... >>> print list(interleave("A,B,C,D".split(","), "00")) ['A', '00', 'B', '00', 'C', '00', 'D', '00'] If the length of the sequence (len(b) in your example) is known in advance the following approach is very efficient as it moves the iteration over the list items into C code: >>> def interleave(items, separator): ... result = 2 * len(items) * [separator] ... result[::2] = items ... return result ... >>> interleave("abcde", "00") ['a', '00', 'b', '00', 'c', '00', 'd', '00', 'e', '00'] _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor