1 交换两个变量
# a = 4, b = 5
>> a, b = b, a
>> print(a, b)
5 4
2 多个变量赋值
>> a, b, c = 4, 5.5, 'Hello'
>> print(a, b, c)
4 5.5 Hello
3 列表中的偶数求和
- 列表索引 +
sum
函数 ```pythona = [1,2,3,4,5,6] s = sum([num for num in a if num % 2 == 0])
print(s) 12 ```
4 从列表中删除多个元素
del
是 Python 中用于从列表中删除值的关键字。
# Delete all even numbers.
>> a = [1,2,3,4,5]
>> del a[1::2]
>> print(a)
[1, 3, 5]
5 读取文件中的每一行
>> with open('data.txt', 'r') as f:
....lst = [line.strip() for line in f]
>> print(lst)
6 创建列表
>> lst = [i for i in range(0, 10)]
>> print(lst)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# OR
>> lst = list(range(0, 10))
>> print(lst)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>> lst = [("Hello" + i) for i in ['Karl', 'Abhay', 'Zen']]
>> print(lst)
['Hello Karl', 'Hello Abhay', 'Hello Zen']
7 映射列表或转换列表元素类型
使用 map
函数。
>> list(map(int, ['1', '2', '3']))
[1, 2, 3]
>> list(map(float, [1,2,3]))
[1.0, 2.0, 3.0]
>> [float(i) for i in [1,2,3])]
[1.0, 2.0, 3.0]
8 创建集合
# Square of all even numbers in an range.
>> {x**2 for x in range(10) if x % 2 == 0}
{0, 4, 16, 36, 64}
9 Fizz Buzz
在这个测试中,我们需要编写一个程序来打印从1 到 20 的数字。但如果是3的倍数,打印 Fizz,如果是 5 的倍数,打印 Buzz,如果同时是3和5的倍数,打印 FizzBuzz,否则打印数字。
>> ['FizzBuzz' if i % 3 == 0 and i % 5 == 0
.... else 'Fizz' if i % 3 == 0
.... else 'Buzz' if i % 5 == 0
.... else i for i in range(1, 20)]
[1,
2,
'Fizz',
4,
'Buzz',
'Fizz',
7,
8,
'Fizz',
'Buzz',
11,
'Fizz',
13,
14,
'FizzBuzz',
16,
17,
'Fizz',
19]
10 回文
>> text = 'level'
>> is_palindrome = text == text[::-1]
>> is_palindrome
True
11 输入用空格分隔的整数们到列表
>> lst = list(map(int, input().split()))
>> 1 2 3 4 5 6 7 8
>> print(lst)
[1, 2, 3, 4, 5, 6, 7, 8]
12 打印图案 —- str.join()
>> n = 5
>> print('\n'.join('😀' * i for i in range(1, n+1)))
😀
😀😀
😀😀😀
😀😀😀😀
😀😀😀😀😀
13 计算阶乘
math.factorial()
>> import math
>> n = 6
>> math.factorial(n)
720
14 斐波那契数列
>> fibo = [0, 1]
>> for i in range(5):
... fibo.append(fibo[-1] + fibo[-2])
>> fibo
[0, 1, 2, 4, 8, 16, 32]
15 质数
质数是一个只能被自身和 1 整除的数。例如:2、3、5、7 等。为了在一个范围内生成质数,我们可以使用带有 filter
和 lambda
的 list
函数来生成质数。
>> list(filter(lambda x : all(x % y != 0 for y in range(2, int(math.sqrt(x)))), range(2, 3)))
[2, 3, 5, 7, 11]
16 求两者中较大的 —- Lambda
>> find_max = lambda x, y : x if x > y else y
>> find_max(12, 55)
55
※ 17 矩阵转置 —- zip() + *
>> a = [[1,2,3],
... [4,5,6],
... [7,8,9]]
>> transpose = [list(i) for i in zip(*a)]
>> transpose
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
18 计算字符串出现的次数 —- re
len(re.findall('python','python is a programming language. python is python.'))
3
19 随机抽取 —- random.choice()
>> import random
>> random.choice(['Head', 'Tail'])
Head # or Tail
20 生成组合
>> groups = [(a, b) for a in ['a', 'b'] for b in [1,2,3]]
>> groups
[('a', 1), ('a', 2), ('a', 3), ('b', 1), ('b', 2), ('b', 3)]
这个是区别于
zip
的,因为循环for b in [1,2,3]
相当于第二层循环 而zip(['a', 'b'], [1,2,3])
的结果是('a', 1) 和 ('b', 2)