Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.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 for循环与生成器表达式之间的差异_Python_For Loop_Generator Expression - Fatal编程技术网

Python for循环与生成器表达式之间的差异

Python for循环与生成器表达式之间的差异,python,for-loop,generator-expression,Python,For Loop,Generator Expression,我尝试了这两种方法将字符串中每个单词的第一个元素大写,但我无法理解第二种方法是如何工作的 s=input().split() for i in s: print(' '.join(i.capitalize())) 这是第二种方法 a_string = input().split(' ') print(' '.join((word.capitalize() for word in a_string))) 输出为 input-----mike hussey 产出1 M

我尝试了这两种方法将字符串中每个单词的第一个元素大写,但我无法理解第二种方法是如何工作的

s=input().split()

for i in s:
 
    print(' '.join(i.capitalize()))
这是第二种方法

  a_string = input().split(' ')

  print(' '.join((word.capitalize() for word in a_string))) 
输出为

input-----mike hussey
产出1

M i k e

H u s s e y
产出2

Mike Hussey

因此,在示例中有一个由2个单词组成的列表

s = ['mike', 'hussey']
在第一次尝试中,您将循环遍历单词,并用空格连接字母,将第一个字母大写。还有多个
print
语句,因此会有多行,如您所见

print(' '.join(i.capitalize())) #i = ['m', 'i', 'k', 'e']
在第二次尝试时,您正在连接单词,将每个单词的第一个字母大写,字母之间没有空格。还有一个
print
语句,因此只能输出一行

print(' '.join((word.capitalize() for word in a_string))) #a_string = ['mike', 'hussey']

第二种方法: 首先,你有上面的清单。首先,你要用大写字母大写每个单词

word.capitalize() for word in a_string
现在您的列表看起来像
['Mike','Hussey']
。您正在用空格连接这些单词,因此输出将是

Mike Hussey <-- space between the 2 capitalized words.

代码中没有列表理解。有一个问题:也许这就是你的意思?@khelwood第二种方法是列表理解。您正在连接(循环)第一个单词中的字母,但第二个单词中的字母。@nagyl生成器表达式不是列表理解。@khelwood好的,您是对的。但是它很近,足以被视为一个。@khelwood thanx我会修复它是的,是生成器表达式的语法,第一个for循环将运行,然后它执行第二个步骤,您想要的输出是什么?我该怎么解释?第二个是如何工作的?我想我把它误认为是列表理解,这就是为什么我感到困惑。我将使用语法,我想这将帮助我btw thanx为您的努力,不要担心,它与列表理解相同,只是用作提高内存性能的参数。它是一样的,只是用了不同的名字。我添加了一个解释,也添加了一个示例来实现第一个输出。
print('\n'.join(' '.join(letter for letter in word) for word in a_string))