其实索引老早就学过了,只是最近看到一个题目又让我给迷住了:’把字符串倒着输出,‘,
想了很久,竟用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)