美文网首页python自学
【Python 3】高级特性

【Python 3】高级特性

作者: 雨水之后 | 来源:发表于2018-01-05 10:16 被阅读4次

切片

利用切片操作,实现一个trim()函数,去除字符串首尾的空格。

思路:

  • 用相同的方法去除头部和尾部的空格;
  • 空格数可能很多,因此可以尝试使用循环的方式去除;
  • 注意不要去除了字符之间的空格;

解法:

def trim(s):
  while s[:1] == ' ':
    s = s[1:]
  while s[-1:] == ' ':
    s = s[:-1]
  return s
    
if trim('hello  ') != 'hello':
    print('测试失败!')
elif trim('  hello') != 'hello':
    print('测试失败!')
elif trim('  hello  ') != 'hello':
    print('测试失败!')
elif trim('  hello  world  ') != 'hello  world':
    print('测试失败!')
elif trim('') != '':
    print('测试失败!')
elif trim('    ') != '':
    print('测试失败!')
else:
    print('测试成功!')

>>> 测试成功!

迭代

使用迭代查找一个list中最小和最大值,并返回一个tuple,不要使用max()min()

思路:

  • 先处理空list的情况;
  • 先为min和max都设定为list中的第一个值,然后通过for循环迭代比较,得出最值;

解法:

def minNmax(list):
  if len(list) == 0:
    return (None, None)
  else:
    min = max = list[0]
    for i in list:
      if i < min:
        min = i
      if i > max:
        max = i
    return (min, max)

# 测试
if minNmax([]) != (None, None):
    print('测试失败!')
elif minNmax([7]) != (7, 7):
    print('测试失败!')
elif minNmax([7, 1]) != (1, 7):
    print('测试失败!')
elif minNmax([7, 1, 3, 9, 5]) != (1, 9):
    print('测试失败!')
else:
    print('测试成功!')

>>> 测试成功!

列表生成式

某list1内含字符串、数字及None,通过列表生成式导出一个list2,内含list1内的所有字符串的小写形态。

思路:

  • 使用isinstance(i, str)来筛选字符串;

解法:

L1 = ['Hello', 'World', 18, 'Apple', None]

L2 = [i.lower() for i in L1 if isinstance(i, str)]

# 测试:
print(L2)
if L2 == ['hello', 'world', 'apple']:
    print('测试通过!')
else:
    print('测试失败!')

>>> 测试通过!

生成器

一个斐波那契数列生成器。

解法:

def fib(max):
  n, a, b = 0, 0, 1
  while n < max:
    yield b
    a, b = b, a+b
    n += 1
  print('Done!')

f = fib(6)

while True:
  try:
    x = next(f)
    print('g', x)
  except StopIteration as e:
    print('Generator returned value: ', e.value)
    break

一个杨辉三角形生成器,把每一行看做一个list,用生成器不断输出。

杨辉三角形

思路:

  • 初始化一个[1]便于计算;
  • 每一行的len都是+1递增的,因此每次计算时先得出当前要计算的行的len
  • 每一行都在逐个计算相邻数字的和,因此这种情况可以使用l[i] + l[i+1]表示;
  • 最后,在新行的头部和尾部都插入一个1

解法:

def triangles():
  l = [1]
  while True:
    yield l
    l = [l[i] + l[i+1] for i in range(len(l)-1)]
    l.insert(0,1)
    l.append(1)

n = 0
results = []
for t in triangles():
    print(t)
    results.append(t)
    n = n + 1
    if n == 10:
        break
if results == [
    [1],
    [1, 1],
    [1, 2, 1],
    [1, 3, 3, 1],
    [1, 4, 6, 4, 1],
    [1, 5, 10, 10, 5, 1],
    [1, 6, 15, 20, 15, 6, 1],
    [1, 7, 21, 35, 35, 21, 7, 1],
    [1, 8, 28, 56, 70, 56, 28, 8, 1],
    [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]
]:
    print('测试通过!')
else:
    print('测试失败!')
    
>>> 测试通过!

THE END.

相关文章

  • Python入门

    Python3教程 安装Python 第一个Python程序 Python基础 函数 高级特性 函数式编程 模块 ...

  • 【Python 3】高级特性

    切片 利用切片操作,实现一个trim()函数,去除字符串首尾的空格。 思路: 用相同的方法去除头部和尾部的空格; ...

  • 2018-02-01Python三、高级特性

    !/usr/bin/env python3 -*- coding:utf-8 -*- 三、高级特性 '''在Pyt...

  • 前言

    Python语言现在拥有: 2个不兼容的语言系列 3个范式 过剩的高级功能 大量的特性冗余 本书涉及Python3...

  • Python3-高级特性

    掌握了Python的数据类型、语句和函数,基本上就可以编写出很多有用的程序了。 比如构造一个1, 3, 5, 7,...

  • Python学习(三)

    Python的高级特性 python中有很多高级特性,比起C/C++来说要简单许多,运用起来十分方便。 切片 通常...

  • Python3(4) Python 高级特性

    本系列主要学习Python的基本使用和语法知识,后续可能会围绕着AI学习展开。Python3 (1) Python...

  • Python高级特性

    切片slice取指定索引范围的操作:[0:10:2]-->意为从第一个元素到第11个元素,元素之间隔2 迭代ite...

  • python 高级特性

    1.切片对取数据很方便,如取一个list的前n个元素,没有接触到切片的,可以使用循环,但是用切片就会很简单: 也支...

  • Python高级特性

    切片 迭代 列表生成式 生成器 generator generator:按照某种算法推算出来结果,是一种一边循环一...

网友评论

    本文标题:【Python 3】高级特性

    本文链接:https://www.haomeiwen.com/subject/psdjnxtx.html