python的索引,切片,步长

其实索引老早就学过了,只是最近看到一个题目又让我给迷住了:’把字符串倒着输出,‘,

想了很久,竟用for这把一个个字符索引位值都更改,代码:

book = "hello,你好 world,世界"
dog = ""
for i in range(1, len(book)):
    dog += book[-i]
print(dog)

当时就觉得有个更简单的方法只是记不起来了,网上搜索才发现用切片+步长就能完成:

book = "hello,你好 world,世界"
print(book[::-1])

然后就觉得我这学完就忘的毛病得别严重,所以就把之前学的东西再写一遍。

索引:是从(第一个),0开始的,还有一个负索引从(最后一个),-1开始。

在变量名后面使用中括号[ ] 将需要的字符提取出来,比如:

# 其中符号,空格,汉字,都算一个索引
book = "hello,你好 world,世界"
print(book[7], book[-10])

切片:字符串切片就是截取字符串的片段,形成子字符串。字符串切片的形式如:

在截取子字符串的时候将包含起始字符,但不包含结束字符,这是一个半开闭区间。

book = "hello,你好 world,世界"
# 在字符串切片的功能上有很好的默认值。省略第一个索引,默认为0;省略第二个索引,默认为切片字符串的长度,
print(book[:8], book[9:])  
# 当第二个索引越界时,将被切片字符串实际长度替代
print(book[6:8], book[15:99])  
# 当第一个索引大于字符串实际长度时,或第二个索引值大于第二个索引时,都返回空
print(book[99:], book[8:6])  

切片+步长

其实呢,第三个值表示的是切片的步长(步长不能为0,默认为1):

若 步长 > 0, 则表示从左向右进行切片。此时,起始值必须小于结束值才有结果,否则为空。例如: 

book[0 : 10 : 2]的结果是"hlo你 "

若 步长 < 0, 则表示从右向左进行切片。 此时,起始值必须大于结束值才有结果,否则为空。列如: book[10: 0: -1]的结果是"ow 好你,olle"

那么,book[::-1]表示从右往左,以步长为1进行切片; book[::2] 表示从左往右以步长为2进行切片.

还有我再网上搜到了两个其他更改字符串的方法:1.join() 2.insert()

1. .join()用

# 比如 cat=12345,是可以迭代的。这个方法的作用就是把dog插入到cat中每个字符中。

1dog2dog3dog4dog5就是输出。

''.join([dog, cat])是比较常见的用法。''是空字符,意味着在dog, cat之间加入空字符,也就是将dog, cat进行了连接。

dog = 'hello, world'
cat = '你好, 世界'
print(dog + cat)
print(''.join([dog, cat]))
print(cat.join(dog))

 2..insert()用法 (这个函数不用多说了吧,就是列表添加元素的)

首先将字符串转换为列表,然后使用列表的.insert()方法来插入字符。

dog = 'hello  world'
cat = '你好,世界'
book = list(dog)
book.insert(6, cat)
dog_cat = ''.join(book)
print(dog_cat)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zou_xi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值