我正在探索函数中的字符串格式,所以假设我们有这个简单而丑陋的函数:
def my_string(z,a,b):
return '%d' '%s' '%s' % (z, a, b)
z = 1
x = ['monkey', 'monkey2', 'monkey3']
y = ['banana', 'banana2', 'banana3']
for item in x and y:
print my_string(z, x, y)
我希望打印出来:
1 monkey banana
1 monkey2 banana2
1 monkey3 banana3
但它正在回归:
1['monkey', 'monkey2', 'monkey3']['banana', 'banana2', 'banana3']
1['monkey', 'monkey2', 'monkey3']['banana', 'banana2', 'banana3']
我无法在地球上理解为什么返回原样并且不像我预期的那样,print x[0]
确实会打印x的第一项monkey
。我错在哪里?
答案 0 :(得分:1)
它不起作用,因为每个循环都打印x
和y
这些是您的列表,而不是列表中的项目。试试这段代码:
def my_string(z,a,b):
return '%d ' '%s ' '%s' % (z, a, b)
z = 1
x = ['monkey', 'monkey2', 'monkey3']
y = ['banana', 'banana2', 'banana3']
for item1,item2 in zip(x, y):
print my_string(z, item1, item2)
zip
使您可以通过返回元组来同时迭代两个列表。有关详细信息,请参阅here。