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)

 

posted @ 2018-06-08 15:56  灿烂初秋  阅读(311)  评论(0编辑  收藏  举报