Python切片简单使用

Python切片(针对List和Tuple常见的操作)

1.切片

首先定义List=[1,2,3,4,5,6,7,8,9,10]

  • List[0:3] 表示取前面三个元素,索引是从0-3,即List[0],List[1],List[2],默认步长是1
  • List[0:3:2] 和上面的类似,只是步长是2
  • List[start,end,step] start:起始索引,end终止索引,step步长
  • List[-1]表示最后一个元素
  • List[-10:2] 表示取后面10个元素,步长是2

Tuple也是一种list,唯一区别是tuple不可变。因此,tuple也可以用切片操作,只是操作的结果仍是tuple。

>>> (0, 1, 2, 3, 4, 5)[:3]
(0, 1, 2)
字符串'xxx'也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:
>>> 'ABCDEFG'[:3]
'ABC'
>>> 'ABCDEFG'[::2]
'ACEG'

2. 迭代

grade = {'a':99, 'b':100, 'c':88}
for key1 in grade: # 如果对dict进行迭代操作的时候默认是迭代的是key
print(key1)

for value in grade.values(): # 如果想要迭代是dict里面的值的时候,需要使用dict.values()内部函数
print(value)

for key,value in grade.items(): # 如果想要输出key和value的值,可以使用内部函数items()函数
print("%s: 'valuse'=%s" % (key, value))
2.1 如何判断一个对象是不是可迭代对象了?

可以通过导入Iterable中isinstance()函数来进行判断是否为迭代对象

from collections import Iterable

print(isinstance('abs', Iterable)) Ture
print(isinstance(133,Iterable))   False
2.2 如何实现像Java中那样的有下标迭代(可借助enumerate)
for i, value in enumerate(['a', 'b', 'c']): # 可以利用enumerate()函数进行完成此操作
print(i, value)
2.3 Python可以同时输出二个数或者多个数
>>> for x, y in [(1, 1), (2, 4), (3, 9)]:
... print(x, y)
...
1 1
2 4
3 9

3. 列表生成式

列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。

>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]

还可以使用两层循环,可以生成全排列:这个十分强大的

>>> [m + n for m in 'ABC' for n in 'XYZ']
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

通过这个可以直接输出小写的字母,十分方便

>>> [s.lower() for s in ['ADDF','AA']]
['addf', 'aa']

4. 生成器

如果我们需要产生一个100万元素的列表,但是现在我们仅仅需要前面几个元素,那么产生一个后面绝大部分元素都浪费了,得不尝试。那么我们可以借助一个生成器来帮助我们。生成器是边计算边进行循环的,所以他是相当于进行一步步递推迭代的,节约空间。要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:

>> L = [x * x for x in range(10)]
>>> L
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> g = (x * x for x in range(10))
>>> g
<generator object <genexpr> at 0x1022ef630>

接下来我们可以使用.next()函数一个一个进行调用

5. 迭代器

  • 凡是可作用于for循环的对象都是Iterable类型;

  • 凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;
    集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。Python的for循环本质上就是通过不断调用next()函数实现的。

参考文章

  1. 廖雪峰的python教程
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当我们使用Python编程语言时,切片(slicing)操作是一种非常常见和有用的技术。它可以用于从字符串、列表、元组和其他可迭代对象提取出指定的部分。 切片操作的基本语法是`[start:stop:step]`,其: - `start`:切片的起始位置索引(包含)。 - `stop`:切片的结束位置索引(不包含)。 - `step`:切片的步长,默认为1(可选参数)。 下面是一些切片操作的示例: **字符串切片:** ```python string = "Hello, World!" slice1 = string[7:12] # 提取 "World" slice2 = string[:5] # 提取 "Hello" slice3 = string[7:] # 提取 "World!" slice4 = string[::2] # 提取 "Hlo ol!" ``` **列表切片:** ```python my_list = [1, 2, 3, 4, 5] slice1 = my_list[1:4] # 提取 [2, 3, 4] slice2 = my_list[:2] # 提取 [1, 2] slice3 = my_list[3:] # 提取 [4, 5] slice4 = my_list[::2] # 提取 [1, 3, 5] ``` **元组切片:** ```python my_tuple = (1, 2, 3, 4, 5) slice1 = my_tuple[1:4] # 提取 (2, 3, 4) slice2 = my_tuple[:2] # 提取 (1, 2) slice3 = my_tuple[3:] # 提取 (4, 5) slice4 = my_tuple[::2] # 提取 (1, 3, 5) ``` 需要注意的是,切片操作返回的结果将是一个新的对象,而不是原始对象的引用。这意味着对切片进行的修改不会影响原始对象。 切片操作还可以用于反向提取元素,例如`string[::-1]`将返回一个反转的字符串。这是一个方便的方法来翻转字符串或列表。 希望这个简单切片操作讲解对你有帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值