【原创】【python】python入门学习总结

本文是关于Python编程的基础学习总结,涵盖了字典、列表、元组、字符串等数据结构,函数、条件判断、循环、数据结构、文件操作、网络编程、正则表达式等内容,适合初学者了解和回顾Python基础知识。
摘要由CSDN通过智能技术生成

dict(字典):d = {‘Michael’: 95, ‘Bob’: 75, ‘Tracy’: 85}
>>> d[‘Michael’]储存key和value一一对应,查找快。
set:{1,2,3}只储存key,且不能重复
list: classmates = [‘Michael’, ‘Bob’, ‘Tracy’]与数组同样用法
tuple:classmates = (‘Michael’, ‘Bob’, ‘Tracy’)一旦初始化后就无法改变,使用方法同list

在函数或属性名称前加上__,即可把函数或属性变成私有变量。只有内部可以访问,外部不能。

一、python编码格式
1.ASCII(单字节编码)、Unicode(多字节编码)和UTF-8(可变长编码)
2.input()等待用户输入,相当于gets()
3、ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符
4.以Unicode表示的str通过encode()方法可以编码为指定的bytes,例如:
>>> ‘ABC’.encode(‘ascii’)
b’ABC’
>>> ‘中文’.encode(‘utf-8’)
b’\xe4\xb8\xad\xe6\x96\x87’
>>> ‘中文’.encode(‘ascii’)
Traceback (most recent call last):
File “”, line 1, in
UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 0-1: ordinal not in range(128)
5.#!/usr/bin/env python3 指定linux下的编译器为python,Windows下为注释
# -- coding: utf-8 -- 指定编码格式为utf-8
6.‘Hi, %s, you have $%d.’ % (‘Michael’, 1000000)格式化,注意变量前需要跟%
二、数据结构
1.list(列表)相当于数组,列表中的数据类型可以是多种。
classmates = [‘Michael’, ‘Bob’, ‘Tracy’]
len(classmates)==3, len函数可计算其元素个数。
用法:classmates[0]、classmates[1]·········,也可用classmates[-1]来取最后一个元素,一次类推
classmates.append(‘Adam’)追加元素到末尾。
classmates.insert(1, ‘Jack’)插入元素到classmates[1]
classmates.pop()删除末尾元素
classmates[1] = 'Sarah’替换元素
2.其中元素也可包含其他列表如:
s = [‘python’, ‘java’, [‘asp’, ‘php’], ‘scheme’]
用法:s[2][1],可看成二维数组。
3.有序列表:元组(tuple)。
classmates = (‘Michael’, ‘Bob’, ‘Tracy’)一旦初始化就不能修改,无法使用insert()、append()等
使用方法不变:classmates[0],classmates[-1]
注意:只有1个元素的tuple定义时必须加一个逗号,,来消除歧义t = (1,)
三、条件判断

  1. age = 3
    if age >= 18:
    print(‘adult’)
    elif age >= 6:
    print(‘teenager’)
    else:
    print(‘kid’)
    把str转换成整数:int()
    四、循环
    1.range()函数,可以生成一个整数序列,从0开始,如range(5)= 0,1,2,3,4
    list(range(5))==[0, 1, 2, 3, 4]
    2.for x in range(101):
    print()
    while 条件:
    3.break和continue和c同样用法

五、dict和set

  1. >>>d = {‘Michael’: 95, ‘Bob’: 75, ‘Tracy’: 85}
    >>> d[‘Michael’]

添加数据:1.直接对字典中不存在的key进行赋值来添加:
>>> dic[‘name’]=‘zhangsan’
>>> dic
{‘name’: ‘zhangsan’}
2.通过setdefault方法添加:
>>> dic.setdefault(‘sex’,‘male’)
‘male’
>>> key=‘id’
>>> value=‘001’
>>> dic.setdefault(key,value)
‘001’
>>> dic
{‘id’: ‘001’, ‘age’: 30, ‘name’: ‘zhangsan’, ‘sex’: ‘male’}
获取数据,且避免出现key不存在的错误:
>>> d.get(‘Thomas’, -1)
-1
删除key:pop(key)
>>> d.pop(‘Bob’)
75
>>> d
{‘Michael’: 95, ‘Tracy’: 85}
特点:1.查找和插入的速度极快,不会随着key的增加而变慢;
2需要占用大量的内存,内存浪费多。
dict的key必须是不可变的。
2.set也是一组key的集合,但不存储value,其中的key不能重复。通过
add(key)添加元素,可以重复添加,但不会有效果。
remove(key)删除元素。
两个set可以做数学意义上的交集、并集等操作:
\ >>> s1 = set([1, 2, 3])
>>> s2 = set([2, 3, 4])
>>> s1 & s2
{2, 3}
>>> s1 | s2
{1, 2, 3, 4}
set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素。
六、函数
def my_abs(x):
if x >= 0:
return x
else:
return -x
1.空函数
def nop():
pass
pass语句什么都不做,那有什么用?实际上pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来。
2.数据类型检查可以用内置函数isinstance()实现:
def my_abs(x):
if not isinstance(x, (int, float)):
raise TypeError(‘bad operand type’)
if x >= 0:
return x
else:
return -x
3.函数可以返回多个值:

4.函数的默认参数:

	 定义默认参数要牢记一点:默认参数必须指向不变对象!

5.可变参数:即入参传入个数可以变化。
def calc(numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
在入参前加一个
,在函数内部,参数numbers接收到的是一个tuple。
在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去:
>>> nums = [1, 2, 3]
>>> calc(*nums)
14
6.关键字参数:
关键字参数在函数内部自动组装为一个dict。

7.命名关键字参数:
def person(name, age, *, city, job):
print(name, age, city, job)
后面的两个参数即为关键字参数,即用户在调用该函数时,必须包含city和job两个关键字,如:
>>> person(‘Jack’, 24, city=‘Beijing’, job=‘Engineer’)
Jack 24 Beijing Engineer
如果函数中已经有了一个可变参数,后面跟的关键字参数前不需要加

def person(name, age, *args, city, job):
print(name, age, args, city, job)
注意:这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

8.递归函数:函数自身调用自身。
汉诺塔的移动:

	理解:千万别想每一个块的移动轨迹。

总共有n个块。想将n个块移动到c,只需要先将上面的n-1个块移动到b,再
把最后一个块移动到c,最后再把b上的n-1个块移动到c即可。千万别考虑n-1个块该怎
样移动到c。这是递归做的事。
https://www.zhihu.com/question/24385418

七、高级特性
1.切片:
>>> L = [‘Michael’, ‘Sarah’, ‘Tracy’, ‘Bob’, ‘Jack’]
>>> L[0:3] //取L中索引0到索引3的数据,不包括L[3], 0可以忽略,L[:3]
[‘Michael’, ‘Sarah’, ‘Tracy’]
也可:
>>> L[-2:-1]
[‘Bob’]
tuple以及字符串均支持切片。
2.迭代:
通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。
即 >>> d = {‘a’: 1, ‘b’: 2, ‘c’: 3}
>>> for key in d:
… print(key)

a
c
b
dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同时迭代key和
value,可以用for k, v in d.items()。
只要是可迭代对象,均可通过for来进行迭代。通过以下函数可判断是否支持迭代。其中
isinstance为內建函数,用来判断参数类型。Iterable为类型,即判断“abc”是否属于Iterable类型
>>> from collections import Iterable
>>> isinstance(‘abc’, Iterable) # str是否可迭代
True
>>> isinstance([1,2,3], Iterable) # list是否可迭代
True
>>> isinstance(123, Iterable) # 整数是否可迭代
False
如要对list进行下标循环,可用enumerate函数:
>>> for i, value in enumerate([‘A’, ‘B’, ‘C’]):
… print(i, value)

0 A
1 B
2 C
也可以同时引用两个变量:
>>> for x, y in [(1, 1), (2, 4), (3, 9)]:
… print(x, y)

1 1
2 4
3 9
3.列表生成式:
要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)):
>>> list(range(1, 11))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]等价于->
>>> L = []
>>> for x in range(1, 11):
… L.append(x * x)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值