我试图按以下顺序将元组的结果添加到多个字符串中:
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
吗?
答案 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()