来自多个列表的Python字符串连接?
我需要生成一个文件,其中每一行是一个句子(模板)和四个变量的串联。 这四个变量(分别为它们的值)以前已收集在单独的列表中。 到目前为止,我已经尝试:来自多个列表的Python字符串连接?,python,string,list,iteration,Python,String,List,Iteration,我需要生成一个文件,其中每一行是一个句子(模板)和四个变量的串联。 这四个变量(分别为它们的值)以前已收集在单独的列表中。 到目前为止,我已经尝试: num = [1,2,3] fruit = [grape ,banana,pea] fruits = [grapes, bananas, peas] with open('result', 'w') as r: for n,f,g in num,fruit,fruits: r.writelines("This is st
num = [1,2,3]
fruit = [grape ,banana,pea]
fruits = [grapes, bananas, peas]
with open('result', 'w') as r:
for n,f,g in num,fruit,fruits:
r.writelines("This is string number %d. This is a %s. And I like to eat %s" % (num[n],fruit[f],fruits[g]))
……这种方法提出:
TypeError:列表索引必须是整数,而不是元组
我也不能将它与不同的列表一起“咀嚼”,即第一个concat将第一个和第二个变量+字符串与中间列表一起,以降低“复杂性”
有人能给我一个失败的提示吗?
num,fruit,fruits
给出了一个元组,使得n,f,g在num,fruit,fruits中的等于:
atuple=num,fruit,fruits
for n,f,g in atuple:
...
因此for循环将atuple[0]
(即num
),将值num[0]、num[1]、num[2]
分配给n、f、g
,然后分配给fruit[0]、fruit[1]、fruit[2]
。。。这就是为什么你会出错
将n、f、g的数值、水果、水果的更改为:
for tup in zip(num,fruit,fruits):
r.writelines("This is string number %d.
This is a %s. And I like to eat %s" % tup)
请参见解决此问题的更惯用方法是:
template = "This is string number {}. This is a {}. And I like to eat {}\n"
with open('result', 'w') as r:
for n, f, fs in zip(num, fruit, fruits):
r.write(template.format(n, f, fs))
请注意以下事项:
- 在您的代码中,这段代码:
In num,fruit,fruits
正在创建一个包含三个列表的元组;必须使用zip()
将输入列表打包在一起并同时遍历它们
- 循环中的
n,f,g
迭代变量指的是列表中的实际元素,而不是索引。这就是为什么这段代码:num[n]、fruit[f]、fruits[g]
会引发错误
- 不推荐使用格式化字符串的
%
语法,应避免使用format()
writelines()
用于写入行列表,用于在使用write()
传递以\n
结尾的字符串时写入单行
python中的For语句具有以下语法
for <value> in <iterable>:
body
List is a <iterable> data type.
可以。该用户是python新手,需要解释错误,而不是修复错误。谢谢!复制了您的解决方案,效果非常好。感谢大家的快速和即时帮助!我显然没有完全理解迭代的概念/它的局限性。谢谢你!模板aproach对我来说是新奇的,并且对于第二次替换提出了一个关键错误。但我肯定会查阅文档,尤其是因为它应该成为新的标准
for (n,f,g) in zip(num,fruit,fruits):