打印列表的第一个字符(初学者)



到目前为止,这是我的代码

def firstChars( s ):
 for word in s:
    print (s[0][0]) 

这是它打印的内容:

>>> s='hello','world'
>>> firstChars(s)
h
h

如何更改此代码以使其打印出"H"和"W"?

s[0]将始终是传递给函数的序列中的第一个元素。要使用上面for循环中正在检查的特定单词,请改用循环中的word

word表示元组/可迭代对象的每个元素。对于元组("Hello", "World")word将等于"Hello",然后等于"World"。要获取每个字母的第一个字母,请将word下标:word[0]

请注意,这不是最安全的方法,因为它会在空字符串上崩溃(因为""没有第 0 个元素)。如果您不能保证字符串不会为空,我可能会定义一个处理空字符串情况的"firstLetter"函数。

为了详细说明JL的答案,你写的东西运行"很好",因为字符串和元组都是可迭代的(就像列表一样)。

当你写s[0][0]时,s[0]计算为"Hello",那么你只剩下"Hello"[0],计算结果为"H"。它输出两次,每次循环迭代一次,因为您基于元组(具有 2 个元素)进行循环。

另一种 pythonic 方式

s='hello','world'
print('rn'.join(item[0] for item in s))
h
w

使用 for word in s 循环,word将首先指向 s 的第一个元素,然后指向第二个元素,依此类推。如果解释对您没有意义,只需运行以下命令:

def each_word(s):
    for word in s:
        print s
s = ("hello", "wolrd")
each_word(s)

现在字符串word的第一个字符是 word[0] ,这应该足以解决您的问题。

for word in s:
    print (s[0][0]) 

在这个代码片段中,word依次成为s的每个元素——s[0]("你好")然后s[1]("世界")。 而s[0][0]直接访问s的第一个元素的第一个元素('h')。 您希望依次访问每个元素的第一个元素。所以:

for word in s:
    print (word[0]) 

将做你想完成的事情。

这有效。 现在,一点警告,它又回到了另一个关于命名的评论。 在 Python 中,很难将字符串与列表或元组区分开来。 它们都是迭代的,它们都有长度和索引。

在命名事物时要小心,因为没有编译器可以捕捉愚蠢的东西。

def firstChars( s ):
    #iterate through list/tuple passed in
    for word in s:
        #now, pick the first character
        print (word[0]) 

试试这个:

def firstChars( s ):
 for word in s:
    print (word[0])

在函数 firstChars 中,您可以正确遍历 s 中的项,但请注意,在 for 块中,您应该使用 word,因为它是在 s 中分配当前项的变量。

另请注意,当您像s[0][0]那样排列多个索引时,每个索引都会"更深入地挖掘"上一项。因此,s[0]引用s中的第一项(字符串"hello"),以下[0]引用该项目的第一个字符("h")。

相关内容

最新更新