Reputation: 648
I have 3 lists of the same length.
L1=[1,2,3,4,5,6]
L2=['a','b','c','d','e','f']
L3=[A,B,C,D,E,F]
I tried a lot of things, but nothing seems to work.
How can I get it out like:
L4=[1aA, 2bB, 3cC, 4dD, 5eE, 6fF]
Thanks in advance. Sorry I supply any code right, but I should be out the door already.
UPDATE:
Here's a little update. I dont know if it changes much. The solution suggested firstly worked fine. The lists I have:
noHit = ['Aeculus hippocastaneum', 'Angelica sylvetris', 'Ilex aguifolium', 'Majanthemum bifolium', 'Carduus palustre', 'Valeriana Sambucifolia', 'Betula pusbescens', 'Stellaria nemorum ssp. nemorum', 'Pteridium aquilinium', 'Dryopteris delatata', 'Equisetum Hyemale', 'Equisetum Sylvaticum', 'Vicia Sepium', 'Quercus rubra', 'Fagus Sylvatica', 'Geranium robertisianum', 'Hypochoeris radicata', 'Stellaria crassifolia', 'Abies alba', 'Holcus Lanatus', 'Deschampsia caespitosa', 'Holcus Mollis', 'Milium Effusum', 'Prunus. serutina', 'Rubus sect. corylifolli', 'Rubus Sect. caesii', 'Salix intermedia', 'Prunus ceracifera', 'Uplandicum nyman', 'Salix ssp.', 'Salix smithiana', 'Scophularia nodosa', 'Juncus coriglomeratus']
arrows = [' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ', ' ------> ']
badSpelling = [['Aesculus hippocastanum'], ['Angelica sylvestris'], ['Ilex aquifolium'], ['Maianthemum bifolium'], ['Cirsium palustre'], ['Valeriana dioica'], ['Betula pubescens'], ['Stellaria nemorum'], ['Pteridium aquilinum'], ['Dryopteris dilatata'], ['Equisetum hyemale'], ['Equisetum sylvaticum'], ['Vicia sepium'], ['Quercus robur'], ['Fagus sylvatica'], ['Geranium robertianum'], ['Hypochaeris radicata'], ['Stellaria pallida'], ['Arabis scabra'], ['Holcus lanatus'], ['Deschampsia cespitosa'], ['Holcus mollis'], ['Milium effusum'], ['Prunus spinosa'], ['Rubus spectabilis'], ['Rubus caesius'], ['Salix cinerea'], ['Prunus cerasifera'], ['Sparganium natans'], ['Salix repens'], ['Salix triandra'], ['Scrophularia nodosa'], ['Juncus conglomeratus']]
Now I wanna print it out like:
Aeculus hippocastanum ----> Aesculus hippocastanum
And write that part to a txt file. And it works well using
holder=[]
holder = [a+b+str(c) for a,b,c in zip(noHits,arrowList,close)]
filnavnUdNHC = 'art NHC.txt'
f3 = open(filnavnUdNHC, 'w')
for hold in holder:
f3.write(hold)
f3.write('\n')
Except that it writes like:
Aeculus hippocastaneum ------> ['Aesculus hippocastanum']
Angelica sylvetris ------> ['Angelica sylvestris']
Ilex aguifolium ------> ['Ilex aquifolium']
Which in fine enough, but not really great. And it, thanks for the answers, gives me a hard time iterating through it since the lists are different.
UPDATE:
Solved it like:
test=[]
led=''
ll=''
i=0
for noHit in noHits:
led=(str(noHit)+' -----> ')
ll=''.join(close[i])
led = led+ll
test.append(led)
i += 1
print led
Its ugly, but it works. If you have any workarounds, please post for better learning :)
Upvotes: 1
Views: 151
Reputation: 948
Another variation on the same theme - more concise and generic, perhaps:
[''.join(map(str,l)) for l in zip(L1,L2,L3)]
Upvotes: 0
Reputation: 304137
>>> L1 = [1,2,3,4,5,6]
>>> L2 = ['a','b','c','d','e','f']
>>> L3 = ['A','B','C','D','E','F']
>>> ["{}{}{}".format(*i) for i in zip(L1, L2, L3)]
['1aA', '2bB', '3cC', '4dD', '5eE', '6fF']
On Python2, you can also use map
>>> map("{}{}{}".format, L1, L2, L3)
['1aA', '2bB', '3cC', '4dD', '5eE', '6fF']
Upvotes: 2
Reputation: 6387
This should work for you:
[''.join(triple) for triple in zip(map(str, L1), L2, L3)]
How does it work?
First you need to change elements of your first list from integer to string representation. You can do this using map
function with str()
.
Then, you can use use zip()
create 3-element lists from corresponding elements.
Finally, you can use list comprehension and join
to construct single string from each triple.
Upvotes: 0
Reputation: 6729
L1 = [1,2,3,4,5,6]
L2 = ['a','b','c','d','e','f']
L3 = ['A','B','C','D','E','F']
L4 = [str(a)+b+c for a,b,c in zip(L1,L2,L3)]
print L4
output
['1aA', '2bB', '3cC', '4dD', '5eE', '6fF']
Upvotes: 3