Python day4:高级特性——切片、迭代

1.切片:

L为一个列表,L[i:j]表示L[i]到L[j-1]的包含j-i个元素的部分.

其中i和j都可以省略,省略i表示从0开始取起,省略j表示取到最后一个同时省略时就表示重新复制了一个列表. L[:j]表示前j-1个元素,l[i:]表示后i个元素

同样,i和j也可以为负数,表示倒数切片

若在后面再加上:k,变为L[i:j:k:],那么表示的是在第i个到第j-1个之间每k个元素取一个

l=[1,2,3,4,5]
print(l[:3])
print(l[:3])
print(l[2:])
print(l[:])
print(l[-3:-1])
print(l[:4:2])
print(l[::2])
[1, 2, 3]
[1, 2, 3]
[3, 4, 5]
[1, 2, 3, 4, 5]
[3, 4]
[1, 3]
[1, 3, 5]

元组tuple,字符串str也可以进行切片

t=(1,2,3,4,5)
print(t[1:3])
s='abcdefg'
print(s[:2])
(2, 3)
ab

def trim(s):
    while s[:1] == ' ':#不使用s[0]是为了排除空串的情形(此时出现s[0]语法错误)
        s = s[1:]
    while s[-1:] == ' ':
        s=s[:-1]
    return s
if trim('hello  ') != 'hello':
    print('测试失败!1')
elif trim('  hello') != 'hello':
    print('测试失败!2')
elif trim('  hello  ') != 'hello':
    print('测试失败!3')
elif trim('  hello  world  ') != 'hello  world':
    print('测试失败!4')
elif trim('') != '':
    print('测试失败!5')
elif trim('    ') != '':
    print('测试失败!6')
else:
    print('测试成功!7')
排除字符串前后空格的函数
2.迭代(iteration):

Python中的迭代应用范围更广,可以用于list,tuple,dict,str等. 只要是可迭代对象,无论有无下标,都可以迭代. list,tuple,str属于有下标,而dict就属于无下标类型

list,tuple直接for x in L/t

dict:默认情况下迭代的是key,如for key in d,而如果需要迭代value则应该写为for value in d.values(),同时迭代key和value,可以用for k,v in d.items()

d = {'a': 1, 'b': 2, 'c': 3}
for key in d:
    print(key)            #迭代key值,在print中通过key'a' 'b' 'c'查找到value 1 2 3
for value in d.values():
    print(value)
结果:

a
b
c
1
2
3

判断能否迭代, 使用collections模块中的Iterable类型判断

from collections import Iterable
print(isinstance('abcd',Iterable))
print(isinstance([1,2,3],Iterable))
print(isinstance(123,Iterable))
True True False
按下表迭代,可以使用enumerate函数

L=[1,2,3,4,5]
for i,value in enumerate(L):
    if i>1 and i<4:
        print(i)
2
3
求最大最小值
def findMinAndMax(L):
    if L: #注意L可能为空
        min=L[0]
        max=L[0]
        for x in L:
            if x<min:
                min=x
            if x>max:
                max=x
        return min,max
    else:
        return (None,None)
if findMinAndMax([]) != (None, None):
    print('测试失败!')
elif findMinAndMax([7]) != (7, 7):
    print('测试失败!')
elif findMinAndMax([7, 1]) != (1, 7):
    print('测试失败!')
elif findMinAndMax([7, 1, 3, 9, 5]) != (1, 9):
    print('测试失败!')
else:
    print('测试成功!')
测试成功!





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值