Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何切片列表元素(获取列表元素的子字符串)?_Python - Fatal编程技术网

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

Python 如何切片列表元素(获取列表元素的子字符串)?,python,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” 那么

该计划:

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”

那么,从列表元素中获取子字符串的正确语法是什么?
(我在raspberry pi上运行python 2.7.3)

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


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

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

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

请注意如何省去第一个或最后一个条目以指示字符串的开始或结束

使用这样的索引的另一个很好的特性是字符串的长度由
stop-start
给出。所以

lijst[1][2:6] = "6-De"
这个子串的长度是
6-2=4

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

lijst[1][0:7:2] = "46Df"
它从开始(索引0)到结束(索引7),并显示每一秒的条目。由于可以省略起始索引和结束索引,因此这相当于

lijst[1][::2]

[a:b]语法中的数字应为“从a到b”,而不是“从a到b”。您要求从4到1的子字符串,该子字符串为空,因为1是。新手犯了错误(其他语言的mid()和substr()太多)
lijst[1][0:7:2] = "46Df"
lijst[1][::2]