Python 元组的麻烦
我知道这是一个初学者的问题,但我们都必须从某个地方开始(是的,我确实环顾了一下某某和YT) 我这样写:Python 元组的麻烦,python,list,tuples,Python,List,Tuples,我知道这是一个初学者的问题,但我们都必须从某个地方开始(是的,我确实环顾了一下某某和YT) 我这样写: firstName = ['Charles', 'Steve', 'Mary'] lastName = ['Manley', 'Perry', 'Shelly'] fullName = zip(firstName, lastName) sayHelloTo = fullName for i in sayHelloTo: print('Hello ' + i) 希望得到这个: He
firstName = ['Charles', 'Steve', 'Mary']
lastName = ['Manley', 'Perry', 'Shelly']
fullName = zip(firstName, lastName)
sayHelloTo = fullName
for i in sayHelloTo:
print('Hello ' + i)
希望得到这个:
Hello Charles Manley
Hello Steve Perry
Hello Mary Shelly
我怎么会把列表变成元组呢?写这个的正确方法是什么
提前感谢。当您在sayHelloTo中对i使用
进行迭代时
会在循环的每次迭代中将整个元组分配给变量i
,因此您的print语句会打印“Hello”加上整个元组
因为每个元组包含两个元素(名字和姓氏),所以要在print语句中正确格式化元组的每个元素,需要完全解压元组,如下所示:
for first, last in sayHelloTo:
print('Hello ' + first +" "+ last)
或者使用f字符串简化打印语句:
for first, last in sayHelloTo:
print(f'Hello {first} {last}')
您需要将打印行替换为以下内容:
print('Hello'+''.join(i))
这正是您想要的:
firstName = ['Charles', 'Steve', 'Mary']
lastName = ['Manley', 'Perry', 'Shelly']
fullName = zip(firstName, lastName)
#unpack
for i,j in fullName:
print("Hello {} {}".format(i,j))
印刷品:
Hello Charles Manley
Hello Steve Perry
Hello Mary Shelly
无需在for循环之前创建元组。您可以在运行时执行此操作。因为您想要使用元组,所以它包含两个值,所以您需要两个变量来将它们解压缩到for循环中 请尝试以下操作:
firstName = ['Charles', 'Steve', 'Mary']
lastName = ['Manley', 'Perry', 'Shelly']
for i,j in zip(firstName,lastName):
print('Hello ' + i + ' ' +j)
如果您使用的是python 3.6+,则可以执行以下操作:
for i, j in zip(firstName, lastName):
print (f'Hello {i} {j}')
编辑:
根据用户的建议,如果希望
sayHelloTo
在列表中包含全名,请将f-string要求更新为python 3.6.。您可以尝试以下代码
sayHelloTo = map(lambda pair: pair[0] + " " + pair[1], zip(firstName, lastName))
我认为误解的地方在于zip创建了一对项。您可以使用iterable参数解包和
*
操作符:
for i in sayHelloTo:
print('Hello', *i)
这将产生:
Hello Charles Manley
Hello Steve Perry
Hello Mary Shelly
啊哼:
print(f'Hello{i}{j}')
;)python 3中引入了f字符串。我在回答中也谈到了python 2。Cheers我很确定将zip()
的结果分配给变量或直接在循环顶部运行变量之间没有区别。您拥有的代码块将崩溃,sayHelloTo=fullName
--fullName
未定义。此外,f-strings
仅适用于Python3.6+,而不适用于3.0+。@AlexanderCécile是的,将结果指定给变量和直接使用它之间没有区别。虽然,我个人的偏好是,不只是为了迭代而使用变量。@Prish是有道理的,我只是被“在for循环之前不需要创建元组”这句话弄糊涂了。您可以在运行时执行此操作。答案中没有一个提到变量名。建议使用带有下划线的小写形式。