[关闭]
@hx 2017-11-30T08:08:12.000000Z 字数 3002 阅读 1003

Python

Python


基本数据类型

  1. hello = "hello world!"
  2. print(hello[2]) # l
  3. print(hello[0 - 4]) # r
  4. print(hello[0:-1]) # hello world

list(数组)

list是一种有序的集合,可以随时添加和删除其中的元素。
和字符串一样,也可反向取值和区间取值。
len()函数可以获得list元素的个数。

pop(i) 不带参删除末尾元素,带参为删除指定位置的元素
insert(index, element) 将元素插入到指定位置

  1. arr = ["h", "e", "l", "l", "o"]
  2. print(arr[1:4]) # ['e', 'l', 'l']
  3. arr[2] = "e"
  4. print(arr) # ['h', 'e', 'e', 'l', 'o']
  5. arr.pop(2)
  6. print(arr) # ['h', 'e', 'l', 'o']
  7. arr.insert(1, "Y")
  8. print(arr) # ['h', 'Y', 'e', 'l', 'o']

tuple(元组)

tuple一旦初始化就不能修改,它也没有append(),insert()这样的方法。其他获取元素的方法和list是一样的。

  1. val = (2, 3, 4, [5, 6, 7])
  2. val[3][2] = 100
  3. print(val) # (2, 3, 4, [5, 6, 100])
  4. # tuple不可变!但指向的list的内容可变,指向的list不可变。

dict

  1. d = {"one": 1, "two": 2, "three": 3, "four": 4}
  2. print(d["one"]) # 1
  3. print(d.get("two")) # 2
  4. d["five"] = 5
  5. print(d) # {'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5}

set

set是不可重复元素集合。

  1. s1 = set(range(6))
  2. print(s1) # {0, 1, 2, 3, 4, 5}
  3. s = {1, 1, 2, 3} # 字面量定义方法
  4. s.add(5)
  5. print(s) # {1, 2, 3, 5}

逻辑

条件判断

  1. day = int(input("day:")) # 输入的是字符串,需要使用int()方法转换成int类型
  2. if day == 2:
  3. print("周二")
  4. elif day == 3:
  5. print("周三")
  6. else:
  7. print("其他")
  1. if 2 in [1, 2]:
  2. print("进来了1")
  3. if 2 in [1, 1]:
  4. print("进来了2")
  5. # 进来了1

循环

遍历输出 list

  1. for i in [1, 2, 3, 4, 5, 6]:
  2. print(i)

Python提供一个range()函数,可以生成一个整数序列

  1. for i in range(10):
  2. print(i, end=" ") # 输出不换行
  3. # 0 1 2 3 4 5 6 7 8 9

while循环

  1. sum = 0
  2. n = 99
  3. while n > 0:
  4. sum = sum + n
  5. n = n - 2
  6. print(sum) # 2500

函数

默认参数

Python函数在定义的时候,默认参数L的值就被计算出来了,即[],因为默认参数L也是一个变量,它指向对象[],每次调用该函数,如果改变了L的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[]了。

  1. def fun(L=[]): # 可指定参数默认值
  2. L.append("H")
  3. print(L)
  4. fun() # ['H']
  5. fun() # ['H', 'H']

修改如下:

  1. def add_end(L=None):
  2. if L is None:
  3. L = []
  4. L.append('H')
  5. return L
  6. print(add_end()) # ['H']
  7. print(add_end()) # ['H']

可变参数

  1. def calc(*numbers):
  2. sum = 0
  3. for n in numbers:
  4. sum += n
  5. return sum
  6. print(calc(1, 2, 3, 4)) # 10

在函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变。

*nums表示把nums这个list的所有元素作为可变参数传进去。

  1. def sum(*numbers):
  2. value = 0
  3. for i in numbers:
  4. value += i
  5. return value
  6. a1 = [1, 2, 3]
  7. a2 = [4, 5, 6]
  8. print(sum(*a1, *a2)) # 21

关键字参数

可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。

  1. def person(name, age, **other):
  2. print("name:", name, "age:", age, "other:", other)
  3. person("xiaoming", 16) # name: xiaoming age: 16 other: {}
  4. person("xiaoming", 16, city="beijing") # person("xiaoming", 16, city="beijing")
  5. extra = {'city': 'Beijing', 'job': 'Engineer'}
  6. person("xiaohua", 18, **extra) # name: xiaohua age: 18 other: {'city': 'Beijing', 'job': 'Engineer'}

**extra表示把extra这个dict的所有key-value用关键字参数传入到函数的**other参数,kw将获得一个dict,注意other获得的dictextra的一份拷贝,对other的改动不会影响到函数外的extra

命名关键字参数

如果要限制关键字参数的名字,就可以用命名关键字参数,例如,只接收city和job作为关键字参数。这种方式定义的函数如下:

  1. def person(name, age, *, city, job):
  2. print(name, age, city, job)

和关键字参数**other不同,命名关键字参数需要一个特殊分隔符**后面的参数被视为命名关键字参数。

命名关键字参数必须传入参数名,这和位置参数不同。

  1. def person(name, age, *, city="beijing", job):
  2. print(name, age, city, job)
  3. person("xiaoming", 16, job="teacher") # xiaoming 16 beijing teacher

如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了。

参数组合

在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

异常

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注