Python 如何打印列表中所有元素的第一个字母?

Python 如何打印列表中所有元素的第一个字母?,python,list,Python,List,首先,我想将用户输入保存到一个名为“name”的变量中。然后,我想按原样打印姓名的最后一个单词,但对于姓名的所有其他单词,我只想以大写字母打印世界上的第一个字母。 假设,name=“堆栈溢出” 我想让它流动起来 首先,我拆分name变量来分隔各个部分。我用名称的最后一部分创建了一个变量调用lname。然后,我又创建了一个名为fname的变量,其中包含除最后一个单词以外的所有其他单词。 我已经尝试过让循环打印fname中的所有首字母。但是,我不能将它们赋给一个变量,这样我就可以将它们与最后一部分连

首先,我想将用户输入保存到一个名为“name”的变量中。然后,我想按原样打印姓名的最后一个单词,但对于姓名的所有其他单词,我只想以大写字母打印世界上的第一个字母。 假设,name=“堆栈溢出” 我想让它流动起来

首先,我拆分name变量来分隔各个部分。我用名称的最后一部分创建了一个变量调用lname。然后,我又创建了一个名为fname的变量,其中包含除最后一个单词以外的所有其他单词。 我已经尝试过让循环打印fname中的所有首字母。但是,我不能将它们赋给一个变量,这样我就可以将它们与最后一部分连接起来,形成一个完整的名称

name=input()
name=name.split(“”)
lname=名称[-1]
fname=名称[:-1]
对于fname中的z:
打印(z[0]
将产生S.O.流量

您可以使用:

name=“堆栈溢出”
'.'.join([x[0]如果i<2,则为i,枚举中的x(name.split())]))
输出:

S.O.Flow

参考资料:


  • 也许有更多类似python的方法可以做到这一点,但是对于最小的代码更改,您所需要做的就是添加到字符串并在循环后打印它您可以将其添加到需要在循环之前实例化的字符串中。然后,您可以在最后打印整个字符串之前将姓氏添加到该字符串中

    name=input()
    name=name.split(' ')
    lname = name[-1]
    fname= name[:-1]
    result = ""
    for z in fname:
        result = result + z[0] + ". "
    result = result + lname
    print(result)
    
    我会做以下几点:

    name=input()
    name=name.split(' ')
    print('. '.join([n[0] if i != len(name) - 1 else n for i, n in enumerate(name)]))
    
    给定的
    堆栈溢出
    返回
    S.O.流

    这不会将字母大写,因此如果提供
    stack over flow
    ,它将返回
    s.o.flow

    要分解我提供的代码,
    。.join()
    获取字符串列表,并使用字符串
    将它们连接在一起。这意味着连接中的代码提供了
    ['s','o','flow']

    连接中的代码称为列表理解。它实际上是一个展平的for循环,将for循环的每个结果附加到一个列表中

    列表理解采用名称的第一个字母,除非该字符串的索引(i)等于列表的最后一个索引。这意味着输入
    Stack Over Flow
    len()为3。最后一个索引为2(从0开始计数-->0='Stack',1='Over',2='Flow')。一旦索引==2,它将使用整个名称而不是第一个字母

    为您提供列表中的索引和列表元素,这就是为什么我的
    for
    循环是
    for i,n
    而不是
    for n
    的原因


    不硬编码一个值(比如说
    ==2
    )的优点是用于其他输入。如果一个人没有中间名怎么办?例如
    John Doe
    应该是
    J.Doe
    。硬编码值为2,结果将是
    J.D.
    。或者如果输入的是Mary Sue Elizabeth Smith呢?她的结果是应该是M.S.E.Smith,但如果在解决方案中硬编码名称的数量,则不会产生该输出。

    此答案利用了高级元组解包(Python3)和f字符串(Python3.6)


    @如果答案对你有帮助,请标出“{}{}”.format(“.join(第一个字母),最后一个单词),你能解释一下这句话吗?@uchcashtr你是什么意思?{}{}有什么用?@andrehihondrari:我真的认为你应该用更像pythonic的
    单词[:len(words)-1]
    来代替
    words[:-1]
    (类似地,
    words[len(words)-1]
    words[-1]
    name=input()
    name=name.split(' ')
    lname = name[-1]
    fname= name[:-1]
    result = ""
    for z in fname:
        result = result + z[0] + ". "
    result = result + lname
    print(result)
    
    name=input()
    name=name.split(' ')
    print('. '.join([n[0] if i != len(name) - 1 else n for i, n in enumerate(name)]))
    
    name = "Stack Over Flow"
    
    *first_words, last_word = name.split(" ")
    first_letters = ' '.join([f"{w[0].upper()}." for w in first_words])
    
    res = f"{first_letters} {last_word}"
    
    print(res)