简体   繁体   中英

Merge two tuples into one

I have two tuples

("string1","string2","string3","string4","string5","string6","string7")

and

("another string1","another string2",3,None,"another string5",6,7)

I would like to do something like this:

("string1another string1","string2another string2","string33","string4","string5another string5","string66","string77").

It would also be ok with a result like:

("string1another string1","string2another string2","string33","string4None","string5another string5","string66","string77")

But since I'm new to Python I'm not sure on how do that. What is the best way of combining the two tuples?

Use zip and a generator expression:

>>> t1=("string1","string2","string3","string4","string5","string6","string7")
>>> t2=("another string1","another string2",3,None,"another string5",6,7)

First expected output:

>>> tuple("{0}{1}".format(x if x is not None else "" ,
                             y if y is not None else "") for x,y in zip(t1,t2))
('string1another string1', 'string2another string2', 'string33', 'string4', 'string5another string5', 'string66', 'string77')

Second expected output:

>>> tuple("{0}{1}".format(x,y) for x,y in zip(t1,t2)) #tuple comverts LC to tuple
('string1another string1', 'string2another string2', 'string33', 'string4None', 'string5another string5', 'string66', 'string77')

Use this ternary expression to handle the None values:

>>> x = "foo"
>>> x if x is not None else ""
'foo'
>>> x = None
>>> x if x is not None else ""
''

Try zip function like

>>> a = ("string1","string2","string3","string4","string5","string6","string7")
>>> b = ("another string1","another string2",3,None,"another string5",6,7)
>>> [str(x)+str(y) for x,y in zip(a,b)]
['string1another string1', 'string2another string2', 'string33', 'string4None', 'string5another string5', 'string66', 'string77']

If you want the result be tuple, you could do like:

>>> tuple([str(x)+str(y) for x,y in zip(a,b)])
('string1another string1', 'string2another string2', 'string33', 'string4None', 'string5another string5', 'string66', 'string77')

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM