学习python笔记(更新中......)

                          1.list
列表
classmate = ['mary' , 'Bob' , 'Michael']
#长度
len(classmate)#len()获取list元素的个数
 
#索引
classmate[0]#mary
classmate[-1]#Michael
 
#添加元素
classmate.append('kity')#加到了后面
#此时classmate = ['mary' , 'Bob' , 'Michael','kity']
#插入到指定的位置
classmate.insert(1,'Jack']#插入到位置1的地方
#此时classmate = ['mary', 'Jack','Bob', 'Michael','kity']
#删除list末尾的元素
classmate.pop()
#删除指定位置的元素
classmate.pop(i) 删除第i个元素
#替换某个位置的元素
classmate[2] = 'Sarah'
 
#list元素也可以是另一个list
s = ['python', 'java', ['asp', 'php'], 'scheme']
#或者
p = ['asp', 'php']
s = ['python', 'java', p, 'scheme']
#len(s) 为 4
 
 
                                    2.tuple元组
tuple与list相似,但是tuple一旦初始化就不能修改。
更加安全
m_tuple = (1, 2) # note:小括号
#只有一个元素的时候
m_tuple = (1, )
L = [
['Apple', 'Google', 'Microsoft'],
['Java', 'Python', 'Ruby', 'PHP'],
['Adam', 'Bart', 'Lisa']
 
input()返回的是string类型
强制类型转换为:
str = input()
>>>2000
b = int(str)
 
 
                          3.循环for
1-10的整数和
sum = 0
for x in [1,2,3,4,5,6,7,8,9,10]:
    sum = sum + x
print(sum)
 
L = ['Bart', 'Lisa', 'Adam']
for x in range(3):
    print(L[x])
    
    
                               4.字典dict与集合set
dict在C++中为map
主要特征: key-value对应
>>>m_dict = {'key0':10,'key1',20}
>>>m_dict['key0']
10
>>>m_dict.get('key1')
20
删除
m_dict.pop('key0')
 
和 list 比较, dict 有以下几个特点:
1. 查找和插入的速度极快,不会随着 key 的增加而增加;
2. 需要占用大量的内存,内存浪费多
 
                               5.函数
def cal_area(r):
    area = 3.14 * r * r
    return area
    
R_dict = {'r1':12.12, 'r2':23,2}
area1 = cal_area(R_dict['r1'])
area2 = cal_area(R_dict['r2'])
 
如果你已经把 cal_area()的函数定义保存为 Area.py 文件了,那么,可以在该文件的当前目录下启动 Python 解释器,用 from Area importcal_area 来导入 cal_area()函数,注意 Area 是文件名(不含.py 扩展名)
 
在函数返回中,貌似可以返回多个值,本质上是返回一个元组tuple
import math
def move(x, y, step, angle=0):
    nx = x + step * math.cos(angle)
    ny = y - step * math.sin(angle)
    return nx, ny#本质上是一个元组的各个元素被返回了
 
利用可变参数,将函数的输入参数设置为可变长度的
eg:计算a2 + b2 +c2 + ……
def calc( *numbers):
        sum = 0
        for n in numbers:
               sum = sum + n * n
        return sum
参数设置为*numbers,这样函数就可以直接接受tuble
调用:
>>>result = calc(2, 3, 4, 5)
如果给定的参数为一个list
nums = [1, 2, 3, 4]
可以直接传变量nums,需要加*
result = calc(*num)
 
关键字参数
 
可变参数
可以传任意个参数,调用的时候组装为一个tuple,基本为同一数据类型(为了方便,也可以不同)
关键字参数
可以传入不同的任意的参数名,调用时候组装为一个dict,可以为不同数据类型的参数。
eg:注册
def person(name, age, **keyWord):
        print('name:', name, 'age:' age, 'other:' keyWord)
在调用的时候,需要输入必须的参数name, age
关键字参数keyWord是可选的输入参数
>>>person('Bob', 30)
或者
>>>person('Bob', 30,city = 'Beijing')
>>>person('Bob', 30, city = 'Beijing', job = 'Endineer')
按照字典的输入方式。
函数内部调用也是字典的调用方式。
注意:只有keyWord这部分是字典类型
 
 
 
 
                                               6.递归函数
 
计算n!
f(n) = 1x2x ... x(n-1) x (n)   =  f(n-1) x n
 
def fun(n):
        if n == 1:
               return 1
        return f(n-1) * n
 
                                                  7.
 
list,随意提取:
>>>L = list(range(100))
# L = [0, 1, 2, 3, ..., 99]
1.前10个数:
L[0:10]  or L[:10]
2.后10个数
L[-10:]
3.前10-20
L[10:20]
4.前10个数,每隔2个数取一个:
L[:10:2]
5.全部list,每隔5个数取一个:
L[::5]
 
tuple也是一种list,唯一的区别就是tuple不可变
前3个元素:
[:3]
字符串 'xxx' 也可以看成是一种 list,每个元素就是一个字符。因此,字
符串也可以用切片操作,只是操作结果仍是字符串:
前3个字符:
[:3]
 
 
                                               8.迭代
 
对于list,或者tuple,通过for循环 遍历整个list/tuple,称为迭代iteration
字典dict迭代:
>>>d = {'a':1, 'b': 2, 'c', 3}
for key in d:
      print(key)
字典循环迭代的是ke-键值。
默认情况下, dict 迭代的是 key。如果要迭代 value,可以用 for value in
d.values(),
for key in d.value():
      print(key)
 
同时迭代 key 和 value,用 for k, v in d.items()
 
 
Python 内置的 enumerate 函数可以把一个 list 变成 索引-元素对,这样就
可以在 for 循环中同时迭代索引和元素本身:
m_list = [1, 2, 3, 4]
for i, v in enumerate(m_list):
    print(i,':',v)
 
L = ['Hello', 'World', 18, 'Apple', None]
[s.lower() for s in L if isinstance(s, str) == True]
 
                     生成器generator
一边循环,一边计算的机制
 
把一个列表生成式的[]改成(),就创建了一个 generator:
普通list生成方式
>>>L = [x * x for x in range(10)]
>>>L
         [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
生成器生成list
>>>g = (x * x for x in range(10))
>>>next(g)
or
for n in g:
    print(n)
 
note:如果一个函数定义中包含 yield关键字,那么这个函数就不是一个普通函数,而是一个generator。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值