Python 列表 list 和字符串 str 的取值 [0] 和 [:1]

列表 list

首先看一段代码:

def list_head1(l):
    print(l[0])


def list_head2(l):
    print(l[:1])
    print(l)


if __name__ == '__main__':
    L = [1, 2, 3, 4, 5]
    list_head1(L)
    list_head2(L)

我们得到结果是:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020031810412196.png
由此可见 [0] 得到的就是列表 list 的第一个元素,这里也就是一个整型变量,而 [:1] 使用切片得到的是一个新的 list 变量。
我一开始错误的以为 [:1] 得到的也是第一个元素,其实不是,新得到的是一个 list 变量。
为什么想到验证这个问题呢:是在由于空 list 的情况差异导致的。请看代码:

def list_head1(l):
    print(l[0])


def list_head2(l):
    print(l[:1])
    print(l)


if __name__ == '__main__':
    L = []
    list_head1(L)

这样运行,代码报错:
在这里插入图片描述
但是第二种运行:

def list_head1(l):
    print(l[0])


def list_head2(l):
    print(l[:1])
    print(l)


if __name__ == '__main__':
    L = []
    list_head2(L)

运行正确,结果如下:
在这里插入图片描述

字符串 str

同样的我们测试字符串类型 str:

def list_head1(s):
    print(s[0])


def list_head2(s):
    print(s[:1])
    print(s)


if __name__ == '__main__':
    S = 'Abc'
    list_head1(S)
    list_head2(S)

运行结果如下:
在这里插入图片描述
这种情况下两者行为一致,都是返回第一个字符。
但是如果是空字符呢?

def list_head1(s):
    print(s[0])


def list_head2(s):
    print(s[:1])
    print(s)


if __name__ == '__main__':
    S = ''
    list_head1(S)

第一个函数会报错:
在这里插入图片描述
而第二个函数:

def list_head1(s):
    print(s[0])


def list_head2(s):
    print(s[:1])
    print(s)


if __name__ == '__main__':
    S = ''
    list_head2(S)

代码正常运行,结果如下:

我们发现没有任何输出,那么切片得到的是什么呢?
我们检查一下类型

def list_head1(s):
    print(s[0])


def list_head2(s):
    print(isinstance(s[:1], str))
    print(s)


if __name__ == '__main__':
    S = ''
    list_head2(S)

结果如下:
在这里插入图片描述
我们切出来的是一个空字符串。

总结:

- [0],意思是取第一个元素,得到的是列表/字符串的第一个元素;如果列表/字符串是空的,取第一个元素就会下标越界
- [:1],意思是进行切片,意思是取从0开始到1为止的这些数据,得到的是列表/字符串/元组;当第一个元素不存在时,返回空列表/空字符串/空元组。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值