51Testing软件测试论坛

标题: 提高 Python 代码的可读性,你需要知道的十个技巧 [打印本页]

作者: lsekfe    时间: 2021-12-10 13:47
标题: 提高 Python 代码的可读性,你需要知道的十个技巧
 1. 字符串反转
  字符串反转有很多方法,咱们再这里介绍两种:一种是切片,一种是python字符串的reversed方法。
  1.  # -!- coding: utf-8 -!-
  2.   string = 'hello world'
  3.   
  4.   # 方法1
  5.   new_str = string[::-1]
  6.   ic(new_str)
  7.   
  8.   # 方法二
  9.   new_str2 = ''.join(reversed(string))
  10.   ic(new_str2)
  11.   
  12.   '''
  13.   ic| new_str: 'dlrow olleh'
  14.   ic| new_str2: 'dlrow olleh'
  15.   '''
复制代码

2. 首字母大写
  这里咱们也是介绍两种方法,区别之处在于**capitalize()**仅是首字母大写。
  **title()**是每个单词开头的首字母都大写。
  1. # 首字母大写
  2.   string = 'hello python and world'
  3.   
  4.   # 方法一
  5.   new_str = string.capitalize()
  6.   ic(new_str)
  7.   
  8.   
  9.   # 方法二
  10.   new_str2 = string.title()
  11.   ic(new_str2)
  12.   
  13.   '''
  14.   ic| new_str: 'Hello python and world'
  15.   ic| new_str2: 'Hello Python And World'
  16.   '''
复制代码

3. 查询唯一元素
  我们利用set的唯一性来确定字符串的唯一元素:
  1.  string = 'hellohellohello'
  2.   new_str = set(string)
  3.   # set类型
  4.   ic(new_str)
  5.   # 字符串类型
  6.   new_str = ''.join(new_str)
  7.   ic(new_str)
  8.   
  9.   '''
  10.   ic| new_str: {'l', 'o', 'h', 'e'}
  11.   ic| new_str: 'lohe'
  12.   '''
复制代码

4. 变量交换
  python中的变量交换比java简单多了,交换两个变量无需定义第三个中间变量,直接交换即可实现。
  1.  a = 'hello'
  2.   b = 'world'
  3.   ic(a+b)
  4.   
  5.   # 直接交换两个变量
  6.   a, b = b, a
  7.   ic(a+b)
  8.   
  9.   '''
  10.   ic| a+b: 'helloworld'
  11.   ic| a+b: 'worldhello'
  12.   '''
复制代码

5. 列表排序
  列表排序这里我们也提供两种方式。第一个是列表自带的**sort() 方法;第二个是python内置函数 sorted()**方法。
  1. score = [88, 99, 91, 85, 94, 85, 94, 78, 100, 80]
  2.   # 方法一
  3.   new_score = sorted(score)
  4.   ic('默认升序:', new_score)
  5.   
  6.   score = [57, 29, 11, 27, 84, 34, 87, 25, 70, 60]
  7.   # 方法二
  8.   new_score2 = sorted(score, reverse=True)
  9.   ic('设置降序', new_score2)
  10.   
  11.   '''
  12.   ic| '默认升序:', new_score: [78, 80, 85, 85, 88, 91, 94, 94, 99, 100]
  13.   ic| '设置降序', new_score2: [87, 84, 70, 60, 57, 34, 29, 27, 25, 11]
  14.   '''
复制代码

6.列表推导式
  使用列表推导式可以快速生成一个列表或者根据列表生成满足需求的列表。
  1.   # 生成10个10-100以内随机整数
  2.   numbers = [random.randint(10, 100) for x in range(10)]
  3.   ic(numbers)
  4.   
  5.   # 输入5折后的价格
  6.   price = [800, 500, 400, 860, 780, 520, 560]
  7.   half_price = [(x*0.5)for x in price]
  8.   ic(half_price)
  9.   
  10.   '''
  11.   ic| numbers: [64, 22, 80, 70, 34, 81, 74, 35, 85, 12]
  12.   ic| half_price: [400.0, 250.0, 200.0, 430.0, 390.0, 260.0, 280.0]
  13.   '''
复制代码

7. 合并字符串
  合并字符串我们使用string的.join()方法实现。
  1. lists = ['hello', 'world', 'python', 'java', 'c++']
  2.   
  3.   # 合并字符串
  4.   new_str = ' '.join(lists)
  5.   ic(new_str)
  6.   
  7.   '''
  8.   ic| new_str: 'hello world python java c++'
  9.   '''
复制代码

8. 拆分字符串
  拆分字符串我们使用string的split()方法实现。
  1. string = 'hello world python java c++'
  2.   string2 = 'hello|world|python|java|c++'
  3.   
  4.   # 拆分字符串
  5.   new_str = string.split(' ')
  6.   ic(new_str)
  7.   
  8.   new_str2 = string2.split('|')
  9.   ic(new_str2)
  10.   
  11.   '''
  12.   ic| new_str: ['hello', 'world', 'python', 'java', 'c++']
  13.   ic| new_str2: ['hello', 'world', 'python', 'java', 'c++']
  14.   '''
复制代码

9. 回文串检测
  回文串是指aba、abba、cccbccc、aaaa这种左右对称的字符串。我们可以根据之前提到的切片来检测这种特殊的字符串序列。
  1.  str = '20211202'
  2.   
  3.   if str == str[::-1]:
  4.       print('yes')
  5.   else:
  6.       print('no')
  7.   
  8.   '''
  9.   yes
  10.   '''
复制代码

10. 统计列表元素出现次数
  统计列表中元素各自出现的次数我们使用collections 的Counter方法。
  1. from collections import Counter
  2.   lists = ['a', 'a', 'b', 'b', 'b', 'c', 'd', 'd', 'd', 'd', 'd']
  3.   
  4.   # 统计所有元素出现的次数
  5.   counts = Counter(lists)
  6.   ic(counts)
  7.   
  8.   # 统计某一元素出现的次数
  9.   ic(counts['d'])
  10.   
  11.   # 统计出现最多次数的一个元素
  12.   ic(counts.most_common(1))
  13.   
  14.   '''
  15.   ic| counts: Counter({'d': 5, 'b': 3, 'a': 2, 'c': 1})
  16.   ic| counts['d']: 5
  17.   ic| counts.most_common(1): [('d', 5)]
  18.   '''
复制代码












作者: 千里    时间: 2021-12-14 09:04
每天一个小技巧,提升python在路上




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2