Python切片
一、切片
切片是list范围取值的一种方式。
import string print(string.ascii_letters)# 所有的大写+小写字母 # abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ print(string.ascii_lowercase)# 所有的小写字母 # abcdefghijklmnopqrstuvwxyz print(string.ascii_uppercase)# 所有的大写字母 # ABCDEFGHIJKLMNOPQRSTUVWXYZ print(string.digits)#所有的数字 # 0123456789 print(string.punctuation)#所有的特殊字符 # !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
1、string.digits
import string nums = [] for s in string.digits: nums.append(int(s)) print(nums) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2、list(string.digits)
import string nums = [] nums = list(string.digits) print(nums) # ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
3、切片取部分值
import string nums = [] nums = list(string.digits) print(nums[-6:-10:-1])# 第二个冒号后面值代表步长,是隔几个元素取一次;步长是负数,从右往左开始取值;步长是负数时,前面两个数也要写负数 # ['4', '3', '2', '1']
4、切片同样适用于字符串
步长为负:
前面两个都不写:则取反
写第一个,第二个不写:从第一个向左取
写第二个,第一个不写:从第二个向左取
写两个:开始位置在结束位置的左侧:取不到
写两个:开始位置在结束位置的右侧:从右往左取
stus = ['a1','a2','a3','a4','a5','a6'] for stu in stus: print(stu) # for i in range(len(stus)): # #0-5 # print(stus[i]) # 上述两种方式输出结果均如下所示: # a1 # a2 # a3 # a4 # a5 # a6
字符串示例:
words = 'hh哈哈哈' for word in words: print(word) # h # h # 哈 # 哈 # 哈
二、切片,list取值的一种方式
stus = ['a1','a2','a3','a4','a5','a6'] print(stus[:3])# 顾头不顾尾,如果开始的元素不写的话,那么就是从最前面开始 # ['a1', 'a2', 'a3'] print(stus[-1])# -1代表最后一个元素 # a6 print(stus[1:])# 如果后面下标不写的话,代表取到最后 # ['a2', 'a3', 'a4', 'a5', 'a6'] print(stus[:])# 开头的下标和结尾的下标都不写的话,代表取整个list # ['a1', 'a2', 'a3', 'a4', 'a5', 'a6']
# 0 1 2 3 4 5 6 7 8 l = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']#切片的时候是顾头不顾尾的 # -9 -8 -7 -6 -5 -4 -3 -2 -1 # print(l[0:9:2]) #步长 # print(l[::-1]) #如果是负数的话,那么取值的时候就从右往左开始取,同时你的开始和结束下标也要写成负数 # print(l[-1:-4:-1])
三、元组,list,但是它是不可变的
1、元组一旦定义好,就不能再变化。
cities = ('beijing','shanghai')# 一旦定义好,就不能再变化 print(cities[0]) # beijing print(cities.count('beijing')) # 1 print(cities.index('beijing')) # 0
2、字符串是不可变的类型,定义好之后不可修改。
s = 'a1、a2' s[0]='b1' # 字符串是不可变的类型,定义好之后不可修改 print(s) # 报错
修改字符串的内容可用replace进行替换。
s = 'abcertyabc' s = s.replace('abc','') print(s) # erty
3、list的id
a = [1,1,2,3,43,5,6,72] b = a[:] print(id(a)) # 10603016 print(id(b)) # 10622920
a = [1,1,2,3,43,5,6,72] b = [1,1,2,3,43,5,6,72] print(id(a)) #11586056 print(id(b)) #11605960
a = [1,1,2,3,43,5,6,72] b = [1,1,2,3,43,5,6,72] b = a print(id(a)) #6933000 print(id(b)) #6933000
4、取得已知list中的偶数:
a = [1,1,2,3,43,5,6,72] b = a[:] for i in b: if i%2 !=0: a.remove(i) print(a) # [2, 6, 72]
5、对a和b重新赋值
a = 'haha' b = a print('重新赋值之前的:',id(b)) #重新赋值之前的: 6870104 print('重新赋值之前的:',id(a)) #重新赋值之前的: 6870104 a = 'sk' print(b) # haha print(a) # sk print(id(b)) # 6870104 print(id(a)) # 6870272
6、a,b = 1,2 交换a和b的两个值:
c = 0 a,b = 1,2 c = a a = b b = c print(a,b)
四、练习题:
a,b = 1,2
在不引入第三个变量的下,把a,b交换过来
方法一:
a,b = 1,2 b = a+b a = b-a b = b-a print(a,b)
方法二(python独有):
b,a = a,b print(a,b)