如何切片列表元素(获取列表元素的子串)?

时间:2013-12-09 19:40:22

标签: python

这个程序:

lijst = ('123-Abc','456-Def','789-Ghi')

print "lijst[1]      = " + lijst[1]
print "lijst[1][4:]  = " + lijst[1][4:]
print "lijst[1][4:1] = " + lijst[1][4:1]

有这个输出:

lijst[1]      = 456-Def
lijst[1][4:]  = Def
lijst[1][4:1] =

?? 我曾希望最后一行成为“D”!

那么从list元素中获取子字符串的正确语法是什么? (我在树莓派上运行python 2.7.3)

2 个答案:

答案 0 :(得分:2)

切片的正确语法是[start:stop],而不是[start:count]在问题中使用的方式。因此,您实际上是在寻找最后一行的lijst[1][4:4+1]lijst[1][4:5]

这有很多很好的理由。您可以使用相同的索引将字符串拆分为两部分,例如

lijst[1][:4] = "456-"
lijst[1][4:] = "Def"

lijst[1][:4] + lijst[1][4:] == lijst[1]

请注意如何省略第一个或最后一个条目以指示字符串的开头或结尾。

使用这样的索引的另一个不错的功能是字符串的长度由stop-start给出。所以

lijst[1][2:6] = "6-De"

,此子字符串的长度为6 - 2 = 4

最后一点需要注意的是,您还可以通过添加另一个步骤索引来跳过字符串中的条目:

lijst[1][0:7:2] = "46Df"

这从开始(索引0)到结束(索引7)并显示每隔一个条目。由于您可以省略开始和结束索引,这相当于

lijst[1][::2]

答案 1 :(得分:0)

使用切片a获取索引bb(不包括[a:b])之间的子字符串。要获取索引i处的字符,只需使用[i](将字符串视为字符数组)。

>>> test = "456-Def"
>>> test[4:5]
'D'
>>> test[4:8]
'Def'
>>> test[4]
'D'