将元组的结果添加到多个字符串中

时间:2018-11-07 10:28:01

标签: python string python-3.x tuples

我试图按以下顺序将元组的结果添加到多个字符串中:

   str1+=, str2+=, str3+=, params results() # return a tuple

示例:

str1 = 'alpha'
str2 = 'beta'
str3 = 'gama'

results() returns 'a', 'b', 'c'

因此,字符串将变为:

str1 ='alphaa'
str2 ='betab'
str3 = 'gamac'

这不起作用。可以使用for loop吗?

4 个答案:

答案 0 :(得分:1)

如果您绝对必须做您想做的事情,我认为最好的解决方案是:

*strings, params = results()
str1 += strings[0]
str2 += strings[1]
str3 += strings[2]

答案 1 :(得分:1)

在给定您正在使用的数据类型的情况下,您无法使用for循环来完成此操作,因为无法遍历字符串变量。您需要将它们作为字符串列表中的元素。

鉴于您当前的设置,这就是您可以使用的

str1+=results[0]
str2+=results[1]
str3+=results[3]
params=results[4]

要使用for循环,您可以使用

str_list = [str1,str2,str3,params]

for item in results:
    if results.index(item) < 3:
        str_list[results.index(item)]+=item
    else:
        str_list[results.index(item)]=item

答案 2 :(得分:1)

您正在寻找矢量化操作。在常规Python中这是不可能的。但这至少可以在语法上通过第三方数据库(例如Pandas)来实现。例如:

import pandas as pd

s = pd.Series(['alpha', 'beta', 'gama'])
s += ['a', 'b', 'c']

print(s.tolist())

['alphaa', 'betab', 'gamac']

使用常规Python,您可以对zip使用列表推导。 Python 3.6+支持格式化字符串文字以简化语法:

str1 = 'alpha'
str2 = 'beta'
str3 = 'gama'

zipper = zip((str1, str2, str3), 'abc')
str1, str2, str3 = (f'{i}{suffix}' for i, suffix in zipper)

print(str1, str2, str3)

alphaa betab gamac

答案 3 :(得分:-1)

此代码将执行您想要的操作:

strings = ["hello", "world"] // string you want to be extended
new_strings = [e[0] + e[1] for e in zip(strings, results())]

new_strings将在result()

的输出中包含扩展了值的字符串