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

时间:2015-04-17 18:59:14

标签: python indexing printing

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

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

这就是它打印的内容:

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

如何更改此代码,以便打印出来' h'和' w'?

7 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

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

详细说明JL的答案,你所写的内容"罚款"因为字符串和元组都是可迭代的(如列表)。

当您撰写s[0][0]s[0]评估为"您好"时,您将离开"Hello"[0],评估为' H& #39 ;.它输出两次,每次循环迭代一次,因为你基于元组的循环,它有2个元素。

答案 2 :(得分:1)

替代pythonic方式

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

答案 3 :(得分:1)

使用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],这应该足以解决您的问题。

答案 4 :(得分:1)

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

小心你如何命名,因为没有编译器来捕捉goofup。

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

答案 5 :(得分:1)

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

在此代码片段中word依次成为s的每个元素 - s[0]('hello'),然后s[1]('world')。而s[0][0]直接访问s('h')的第一个元素的第一个元素。您希望依次访问每个元素的第一个元素。所以:

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

会做你想要完成的事情。

答案 6 :(得分:1)

试试这个:

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

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

另请注意,当您在s[0][0]中排列多个索引时,每个索引都会更深入"进入上一个项目。因此,s[0]引用s中的第一项(字符串' hello'),以下[0]引用该项目的第一个字符(&#39} ; H'。)