python学习--切片、迭代、列表生成式

博客介绍了Python中的切片、迭代和列表生成式。提到可通过collections模块的Iterable类型判断对象是否为可迭代对象,还给出使用迭代查找列表最小和最大值的示例。同时指出列表生成式可用一行语句代替循环,且可结合if判断筛选元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、切片

S=list(range(15))
print(S)  #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
print(S[0],S[1],S[2]) #0 1 2
print(S[0:3]) #[0, 1, 2],S[0]到S[3],包括S[0]不包括S[3]
print(S[:3])  #[0, 1, 2],起始值为0时可以省略
print(S[1:3]) #[1, 2] ,S[1]到S[3],包括S[1]不包括S[3]
print(S[-1]) #14 ,倒数第一个元素
print(S[-5:]) #[10, 11, 12, 13, 14] #倒数最后5个元素
print(S[2:5]) #[2, 3, 4] 
print(S[:5:2]) #[0, 2, 4] ,S[0]到S[5],每隔2个取一个值
print(S[::5]) #[0, 5, 10],S全部元素,每隔5个取一个值
print(S[::1]) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
print(S[::-1]) # [14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
print(S[-2]) #13,倒数第二个元素

2、迭代:

当我们使用for循环时,只要作用于一个可迭代对象,for循环就可以正常运行,那么,如何判断一个对象是可迭代对象呢?方法是通过collections模块的Iterable类型判断:

from collections import Iterable
d = {'a': 1, 'b': 2, 'c': 3}

print(isinstance(d,Iterable))  #True
print(isinstance(123,Iterable)) #False
print(isinstance('123',Iterable)) #True


for i in d.values():
    print(i)    #1 2 3
for k in d.keys():
    print(k)   #a b c

for n,m in d.items():
    print(n,m) #1 a  2 b  3 c

请使用迭代查找一个list中最小和最大值,并返回一个tuple: 

#请使用迭代查找一个list中最小和最大值,并返回一个tuple:
str_h=[1,3,6,9,0,2,4]
def findMinAndMax(L):
    if L == []:
        return (None, None)
    else:
        return (min(L), max(L))

print(findMinAndMax(str_h)) #(0,9)

3、列表生成式:

print(list(range(1,11)))   #[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
L=[]
for x in range(1,11):
    L.append(x*x)
print(L)    #[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

但是循环太繁琐,而列表生成式则可以用一行语句代替循环生成上面的list:

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

for循环后面还可以加上if判断,这样我们就可以筛选出仅偶数的平方:

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值