在Python的列表中搜索包含“ <”和“>”的值

时间:2019-03-14 14:10:21

标签: python

教育问题:

在这段代码中,它为我提供了像"<something>"这样写的值量(大约是“ <”和“>”)。

tokens = ['<greeting>', 'Hello World!', '</greeting>']

count = 0
for token in tokens:
    if token[0] == '<' and token[-1] == '>':
        count += 1

print(count)

有人可以向我解释if token[0] == '<' and token[-1] == '>'部分吗?

因为我的读法是:如果列表标记中的第一个值("<greetings>")等于“ <”,并且最后一个值('</greetings>')等于'>',然后加1进行计数。

我会像if token == '<' and token == '>'这样写,但这是不正确的。

谢谢!

5 个答案:

答案 0 :(得分:2)

  1. tokentokens列表中的元素

  2. 条件检查元素的前char<,最后一个字符是>

  3. 每次找到符号,count变量都会增加,即在这种情况下为2(<greeting></greeting>

答案 1 :(得分:1)

基本上,您正在遍历令牌列表,并检查令牌的第一个字符是否以'<'开头并以'>'结尾。您可以在单个语句中压缩逻辑

sum(1 for token in tokens if token[0] == '<' and token[-1] == '>') 

答案 2 :(得分:0)

代码会在for token in tokens:中的列表上进行迭代,因此对于第一个迭代,令牌变量中有'<greeting>'

因为它是一个字符串,token[0]是'<',而token[-1]是'>'。

token[-1]token[len(token)-1]相同

答案 3 :(得分:0)

变量token仅包含列表中的一个字符串,而token[0]是该字符串的第一个字符。

通过添加打印语句,您可以自己看到:

tokens = ['<greeting>', 'Hello World!', '</greeting>']

count = 0
for token in tokens:
    print()
    print('token', token)
    print(token[0])
    print(token[-1])
    if token[0] == '<' and token[-1] == '>':
        count += 1

print('count', count)

此打印:

token <greeting>
<
>

token Hello World!
H
!

token </greeting>
<
>
count 2

答案 4 :(得分:0)

您必须在此代码段中了解两种Python语言功能,以了解其背后的想法:

  1. for token in tokens部分遍历令牌列表,并在每次迭代时提取下一个令牌。首先它将得到'<greeting>',然后是'Hello World!',最后是'</greeting>'

  2. if token[0] == '<' and token[-1] == '>'部分负责使用索引来识别"<something>"格式。 [0]索引引用令牌的第一个字符,[-1]索引引用令牌的最后一个字符。此行为是Python的一项精巧功能,可以“以另一种方式”“计数”可迭代对象。