Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 元组的麻烦_Python_List_Tuples - Fatal编程技术网

Python 元组的麻烦

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

我知道这是一个初学者的问题,但我们都必须从某个地方开始(是的,我确实环顾了一下某某和YT)

我这样写:

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循环之前不需要创建元组”这句话弄糊涂了。您可以在运行时执行此操作。答案中没有一个提到变量名。建议使用带有下划线的
小写形式。