常见代码
result = map(lambda x: int(x), input().split())
print(list(result))
# 输入1 2 3,得到列表[1,2,3],这里使用split()比split(' ')更能容错
# 如果使用了' ',那么输入必须严格按照一个空格,并且最后一个数字后面不可以有空格。
print('Hello' if True else 'World') # Hello
print('Hello' if False else 'World') # World
a = [1,2,3,4]
a[1:1] = [0,0,0] # [1, 0, 0, 0, 2, 3, 4]甚至是a[1:0]都是有效的操作
# 对字典遍历,如果没有使用字典的items,keys,values函数,默认遍历的也是key
costs = {
'fin': inf, 'a': 6, 'b': 2}
for cost in costs:
print(cost, end=' ')
node = costs(cost)
# fin a b
# 如果是costs,而不是costs.items(),比如上面的的cost其实就是键的值。costs(cost)得到value。
# 初始化链表
class Node:
def __init__(self, value, next=None):
self.value = value
self.next = next
L = Node('a', Node('b', Node('c')))
list x = [1,2,3]
tuple x = (1,2,3)
set x = {
1,1,2,3} # {1,2,3}
python -i test.py
执行之后,源码中使用的变量会继续驻留在交互式的解释器中,可以继续使用。
浮点数比较问题
from decimal import *
sum(Decimal('0.1') for i in range(10)) == Decimal('1.0')
def almost_equal(x, y, places=7):
return round(abs(x-y), places=7)==0
almost_equal(sum(0.1 for i in range(10), 1.0)
列表
append是把一个元素加入到列表的最后,extend是把一个元素中包含的元素加入到列表后面,所以extend的对象是要可迭代的。如果extend的是一个字符串,那么字符串拆分成一个一个字符加入到列表中。
data = ['Hello', '2018', 'New Year']
print(data, sep=',') # ['Hello', 2018, 'New Year']
print(*data, sep=',') # Hello,2018,New Year
enumerate
items = ['a', 'b', 'c']
for id, value in enumerate(items, 1): # 1是设置输出id的起始值
print(id, value) # 1 a 2 b 3 c
data = [(1, 2), (3, 4), (5, 6), (7, 8)]
# 不可以for index, x, y in ...
for index, (x, y) in enumerate(data):
print(index, x, y)
列表逆序
nums = [1, 2, 3, 4, 5]
nums_re = nums[::-