python学习笔记2:列表、元组、字典

list与tuple(列表与元组)

都是序列,len()获取列表元素个数,索引值都是从0开始
最后一个元素的索引是len(classmates) - 1,用-1索引可以获取最后一个元素即classmate[-1]
当索引超出了范围时,Python会报一个IndexError错误

list [yuan,su]

追加元素: __.append(‘yuan su’)
插入元素:__.insert(1, ’ yuansu ’ ) 1代表索引位置
**删除末尾元素:__pop()**可以在括号加索引位置
替换元素:classmates[1] = 'Sarah’
列表元素可以不同数据类型,元素也可以是列表,此时可以当做二维数组引用

tuple (yuan,su) 逗号才是元组的辨识符号

一旦初始化就不可更改
可以用索引值引用
t = (1,)也是元组,没有逗号就是一个整数
如果其中有一个元素是list,那么可以改变这个list中的元素,但是tuple永远指向这个list

条件判断

if 语句:条件之后要加冒号
**if _____:
__
else:
___
**
**用if , elif, 来做更细致的判断 **

input

**birth = input('birth: ')
if birth < 2000:
print(‘00前’)
else:
print(‘00后’)
**
会报错,因为输入的是字符串不能和整数比较,需要用int强制转换
s = int(input('birth: '))

循环语句

1. for __ in __可以吧list和tuple元素一个个迭代出来
range函数可以直接生成一个整数序列:list(range(0,5))
[0, 1, 2, 3, 4]

range(101)就可以生成0-100的整数序列
2. while 循环:
sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum)

3. 循环中使用break可以提前退出循环:可以通过if来判断退出条件
4. continue的作用是提前结束本轮循环,并直接开始下一轮循环的条件判断:可以通过if来判断退出条件
Ctrl+C退出程序,或者强制结束Python进程。

dict 与set

dict 字典:使用键-值(key-value)存储,具有极快的查找速度,用大括号表示

d = {‘Michael’: 95, ‘Bob’: 75, ‘Tracy’: 85}
可以通过key放入元素: d[‘Adam’] = 67
一个key只能对应一个value,强行放入会被覆盖,key 不能重复

  1. **通过 元素 in 字典 **来判断key是否存在
  2. **dict_.get(‘key_’)**来判断key,如果key不存在,可以返回None,或者自己指定的value:d.get(‘Thomas’)
    或者 d.get(‘Thomas’, -1) -1
  3. **dict_ .pop(‘key’)**来删除元素
  4. dict内部存放的顺序和key放入的顺序是没有关系的。
  5. 用空间来换取时间的一种方法
  6. dict的key必须是不可变对象,不能是变量

set 是一组key的集合,不存储value

  1. 要创建一个set,需要提供一个list作为输入集合:

s = set([1, 2, 3])
s
{1, 2, 3}

  1. 重复元素会被自动过滤
  2. 通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果:s_.add(4)
  3. 通过remove(key)方法可以删除元素
  4. set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作,用& |
  5. set和dict的唯一区别仅在于没有存储对应的value
不可变对象


即不可变对象本身没有变化,只是多了一个拷贝

函数

  1. 内置的可以直接调用:abs(),max(),还有强制类型转换 int()等
  2. 可以把函数名赋给一个变量,以后函数名与变量名等价
  3. hex()可以把整数转化为16进制 0x400
    a = 1024
    b = (hex (a))
    **print (b[2:])**可以从第三个字符开始显示 0x400 -> 400
定义函数
  1. def 函数名 (形参):
    函数体
    返回值(缺省情况下返回none)

  2. 导入自定义函数:如果你已经把my_abs()的函数定义保存为abstest.py文件了,那么,可以在该文件的当前目录下启动Python解释器,用from abstest import my_abs来导入my_abs()函数,注意abstest是文件名(不含.py扩展名)

  3. 空函数:用于占位,还没想好怎么写的函数
    if age >= 18:
    pass

  4. 函数返回多个值
    比如在游戏中经常需要从一个点移动到另一个点,给出坐标、位移和角度,就可以计算出新的新的坐标:
    import math
    def move(x, y, step, angle=0):
    nx = x + step * math.cos(angle)
    ny = y - step * math.sin(angle)
    return nx, ny
    **x, y = move(100, 100, 60, math.pi / 6)**实际上返回的是一个tuple给对应的变量

  5. 计算平方根可以调用math.sqrt()函数:
    import math
    math.sqrt(2)
    1.4142135623730951

  6. 位置参数:传入函数的参数时安慰位置先后传给多个变量

  7. 默认参数:def power(x, n=2): 默认n的值为2,输入时可以只输入一个值(只能放在后面
    默认参数降低了函数调用的难度
    当然也可以def power(x, 3)或者def power(x, n=2)来取代默认参数值
    注意:定义默认参数要牢记一点:默认参数必须指向不变对象!
    不然会出现:
    add_end()
    [‘END’]
    但是,再次调用add_end()时,结果就不对了:
    add_end()
    [‘END’, ‘END’]
    add_end()
    [‘END’, ‘END’, ‘END’]
    因为默认参数L也是一个变量,它指向对象[]。可以通过用None这个不变对象来实现没有记忆性

重要!!!
8. 可变参数:传入的参数个数可变
不用可变参数时可以一个list或tuple传进来 :
def calc(numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
调用的时候,需要先组装出一个list或tuple: calc([1, 2, 3])

利用可变参数,调用函数的方式可以简化成这样:calc(1, 2, 3) 只需要在numbers前加一个*即可
** *nums**表示把nums这个list的所有元素作为可变参数传进去。这种写法相当有用,而且很常见。

  1. 关键字参数:关键字参数在函数内部自动组装为一个dict
    def person(name, age, ** **kw **):
    print(‘name:’, name, ‘age:’, age, ‘other:’, kw)
    person(‘Bob’, 35, city=‘Beijing’)
    name: Bob age: 35 other: {‘city’: ‘Beijing’}
    person(‘Adam’, 45, gender=‘M’, job=‘Engineer’)
    name: Adam age: 45 other: {‘gender’: ‘M’, ‘job’: ‘Engineer’}

  2. 命名关键词参数:命名关键字参数必须传入参数名
    def person(name, age, * , city, job): * 是分隔符
    print(name, age, city, job)
    person(‘Jack’, 24, city=‘Beijing’, job=‘Engineer’)
    Jack 24 Beijing Engineer
    和关键字参数**kw不同,命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数。
    命名的关键字参数是为了限制调用者可以传入的参数名,同时可以提供默认值

  3. 使用*args和**kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。

递归函数:函数在内部调用自身本身

阶乘:

def fact(n):
    if n==1:
        return 1
    return n * fact(n - 1)

函数调用是通过栈(stack)这种数据结构实现的
使用递归函数的优点是逻辑简单清晰,缺点是过深的调用会导致栈溢出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值