Python——基础篇

〇、环境准备

安装配置

参考博客

注意:Python 2 和 Python 3 的区别

1.Python 2 中一个int包含32位,long包含64位;Python 3 取消了long型,int可以存储任意大小的整数
2. Python 3 提供了对Unicode的支持,可以包含世界上任何书面语言以及很多特殊符号。
3. 若mac使用了zsh,则在~/.zshrc文件最后,增加一行:source ~/.bash_profile
4. 安装pip,curl https://bootstrap.pypa.io/get-pip.py -o {dir/filename},sudo python3 get-pip.py即可

错误合计

1. 修改python和pip的版本(Linux)

# pip/python -V来查看当前版本
# which pip/python来查看命令所在的路径,一般安装路径为/usr/lib或/usr/local/lib下
# 更改软链接前需要删除之前建立好的链接
mv /usr/bin/python /usr/bin/python.bak
ln -s /usr/bin/python3.6 /usr/bin/python

# 之后需要根据提示修改例如yum脚本第一行#!/usr/bin/python为python2

2. pip 安装、升级、卸载失败

# 设置windows下的代理
set http_proxy={proxyid:port}
set https_proxy={proxyid:port}

# 旧版本依赖多,不能清晰的删除,此时应该忽略旧版本升级
pip install --ignore-installed {kit-name}

# 查看pip安装路径,可以再输入一次pip install,即可根据提示“already satisfied”后的路径找到

3. pip安装超时

# 显示ConnectTimeoutError的WARRING时,暂时更改pip镜像源
pip install -i http://mirrors.aliyun.com/pypi/simple/ {package-name}

# 提示not a trusted or secure host导致无法找到镜像
# 源地址:http://pypi.mirrors.ustc.edu.cn/simple/;http://mirrors.aliyun.com/pypi/simple/
pip install {package-name} -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

4. 分别使用py2和py3运行pip

python2 -m pip install {package-name}
python3 -m pip install {package-name}

py -2 {file-name}.py
py -3 {file-name}.py

一、基本元素(原子)

// 对象(变量或字面值)的类型
type()

// 运算符
+     加法
-     减法
*     乘法
/     浮点数除法
//    整数除法
%     模(求余)
**divmod()  返回(,余数)

// 基数
0b0B代表二进制
0o或0O代表八进制
0x或0X代表十六进制

// 类型转换
int()可以接受浮点数或由数字组成的字符串,但是无法接受包含小数点或指数的字符串
>>> int(98.6)
98
>>> int('-23')
-23

// 字符串
''""中创建字符串
交互式解释器输出的字符串为单引号包裹。双引号中可以包含单引号。
三引号用于创建多行字符串,每行的换行符及行首末的空格会保留,例如
>>> poem = '''There was a Young Lady of Norway,
... Who casually sat in a door way;
... When the door squeezed her flat,
... She exclaimed, "What of that?"
... This courageous Young Lady of Norway.'''1)但当我们调用print() 进行打印时,Python 会在各个参数之间自动添加空格并在结尾添加换行符;
(2)可以使用字”符串*数字“来复制字符串;
(3)偏移量[]可以使用0-1表示最左边和最右边字符;
(4)字符串不可改变。

1. 字符串操作

  1. slice操作
    分片操作对于无效偏移量的容忍程度要远大于单字符提取操作。 在分片中,小于起始位置的 偏移量会被当作 0,大于终止位置的偏移量会被当作 -1。
[start:end:step]

# 整个字符串,等价于[:]
[0:-1]
# 提取最后三个字符
[-3:]
# 反向提取字符串,等价于[::-1]
[-1::-1]
  1. split() 和 join()
# 结果为list,如果待分割的字符串中包含连续的分隔符,那么在返回的列表中会出现空串元素。
string.split(',')

# 首先指定粘合用的字符串,然后再指定需要合并的列表
string.join(_list)
  1. 大小写操作操作
# 首字母大写
capitalize()

# 所有单词开头字母大写
title()

# 全大写
upper()

# 全小写
lower()

# 所有字符大小写互换
swapcase()

# 字符串对齐操作:center(30)、ljust(30)、rjust(30)
  1. 字符串分割、替换操作
# 删除指定字符
string.strip('.')

# 参数:需要被替换的子串,用于替换的新子串,以及需要替换多少处(默认只替换第一次)。可借助正则表达式。
setup.replace('a ', 'a famous ', 100)

二、列表[]、元组()、字典{}与集合{}(分子)

1. 列表(list)和元组(tuple)

序列结构,不要求所含元素的种类相同。元组(…)可变,列表[…]不可变。


(1)列表

具有相同值的元素允许出现多次,有顺序性。
可以使用list()和split()转换为list形式。列表中包含列表可以使用双重索引。

# 1.添加元素到最后
.append()

# 2.使用extend()或+=合并列表
# append()会将list插入到一个元素中,使用+=可以避免

# 3.del为python语句,不能通过方法形式调用
del _list[offset]

# 4.删除指定元素
_list.remove('value')

# 5.使用pop()获取并删除指定位置的元素,默认为-1
_list.pop(number)

# 6.查询具有特定值的元素位置
_list.index('value')

# 7.判断值是否存在
'value' in _list

# 8.记录特定值出现的次数
_list.count('value')

# 9.重新排列元素
# 列表方法 sort() 会对原列表进行排序,改变原列表内容;
# 通用函数 sorted() 则会返回排好序的列表副本,原列表内容不变。
sorted_list = sorted(_list)
_list.sort()
_list.sort(reverse=True) # 默认升序排列,此处改为降序排列

# 10.获取长度
len(_list)

# 11.复制,无关联。列表 copy() 函数、list() 转换函数、列表分片 [:]
b = a.copy()
c = list(a)
d = a[:]

利用list构建堆栈

# FIFO,队列
append() + pop()

# FILO,栈
append() + pop(0)

(2)元组

常量列表。函数的参数是以元组形式传递的。

# 1.创建,只有一个末尾也必须加','(定义元组),如果元组数大于1,最后的','可以省略
one_tuple = 'Groucho',  # 或('Groucho')
many_tuple = 'Groucho', 'Chico', 'Harpo' # 或('Groucho', 'Chico', 'Harpo')

_list = ['Groucho', 'Chico', 'Harpo'] 
many_tuple = tuple(_list)

# 2.元组解包
a, b, c = many_tuple

tuple1 = 'abc','def'
tuple2 = '123','456'
tuple3 = 'a1','b2'
tuple1, tuple2, tuple3 = tuple2, tuple3, tuple1 # 利用元组交换值

2. 字典(dictionary/dict)

类似无序列表,通过键(key)来标识。又称关系型数组、哈希表或哈希图,{…}。

# 1.dict(),将包含双值子序列的序列转换成字典
lol = [['a', 'b'], ['c', 'd'], ['e', 'f']]. # 或los = ['ab', 'cd', 'ef']
dict(lol)

lol['new_key'] = 'new_value'

# 2.update(),将一个字典的键值对复制到另一个字典中去
dict1.update(dict2)

# 3.删除元素
del dict1['value']
dict1.clear()

# 4.判断某一个键是否存在于一个字典中
'key' in dict1  # 返回true or false

# 5.获取值
dict1.get('key')  # 不存在返回None
dict1['key']  # 不存在会报错

dict1.keys()  # 获取所有键,返回一个列表(p2)或dict_keys()键的迭代形式(p3)
dict1.values()
dict1.items()

# 6.复制,=或copy()

3. 集合(set)

无顺序性。类似舍弃了值后的字典。

# 1.去重set(),判断是否在内in

# 2.集合运算符
# 交集运算符&,结果是一个集合
# 或者通过集合函数 a.intersection(b)

# 并集:|、union()

# 差集:-、difference() 

# 异或集(仅在两个集合中出现一次,即不同的):^、symmetric_difference() 

# 子集:<=、issubset() 

# 超集:>=、issuperset()(真超集:>)


三、代码结构

  1. Python 使用空白来区分代码结构;

  2. # 表示注释,出现在文本串中,将回归普通字符 # 的角色;

  3. 一行程序的(非强制性)最大长度建议为 80 个字符,连接符 \ 放在行末;

  4. 逻辑判断

# not替代!
if {condition}:
	{expression}
elif:
	{expression}
else:
	{expression}

以下情况会被认为是False:

TypeValue
布尔False
null 类型None
整型0
浮点型0.0
空字符串‘’
空列表[]
空元组()
空字典{}
空集合set()
  1. 循环
    如果 while 循环正常结束(没有使用 break 跳出),程序将进入到可选的 else 段。
# break, continue
while {condition}:
	{expression}
else {condition}:
	{expression}

# 简洁编码
# 列表(例如 rabbits)、字符串、元组、字典、集合等都是 Python 中可迭代的对象。
strs = 'abc', 'def', 'ghi'  # 也可以是'cat'或dict1.items()
for str in strs: 
    print(str)
else {condition}:
	{expression}
  1. 并行迭代
    zip() 函数在最短序列“用完”时就会停止。
for day, fruit, drink, dessert in zip(days, fruits, drinks, desserts):
	print(day, ": drink", drink, "- eat", fruit, "- enjoy", dessert)
  1. 生成自然数序列
    range(start、stop、step)。而 start 的默认值为 0。唯一要求的参数值是 stop,产生的最后一个数的值是 stop 的前一个,并且 step 的默 认值是 1。
for x in range(2, -1, -1): 
	print(x)
list( range(2, -1, -1) )  # 返回的是可迭代的对象
  1. 推导式
    (1)列表推导式[]
    返回结果 + for循环 + 条件
    [expression for item in iterable if condition]
# method 1
number_list = [str(number) for number in range(1,6)] 

# method 2
cells = [(row, col) for row in rows for col in cols] 

# method 3
vec = [[1,2,3],[4,5,6],[7,8,9]]
result = {y for x in vec for y in x}  # 返回{1,2,3,4,5,6,7,8,9}

(2)集合推导式和字典推导式把[]换成{}即可;
(3)元组是没有推导式的,圆括号之间的是生成器推导式,它返回的是一个生成器对象。且一个生成器只能运行一次,列表、集合、字符串和字典都存储在内存中,但 是生成器仅在运行中产生值,不会被存下来。

  1. 函数
    没有()时被当作对象处理。
# 如果函数不显式调用 return 函数,那么会默认返回 None。
# 可以在def时指定默认参数值
def {function}():
	paas  # pass表明函数没有做任何事情

# 区别None和False
def is_none(thing): 
	if thing is None:  # is操作符
		print("It's None") 
	elif thing:
		print("It's True") 
	else:
		print("It's False")

# 参数另一种写法,避免混淆位置参数
menu(entree='beef', dessert='bagel', wine='bordeaux')

# 1.星号将一组可变数量的位置参数集合成参数值的元组(位置参数收集)
# 2.使用两个星号可以将参数收集到一个字典中,参数的名字是字典的键,对应参数的值是字典的值(关键字参数收集)
# 如果你的 函数同时有限定的位置参数,那么 *args 会收集剩下的参数
def print_more(required1, required2, *args):


# 文档字符串
def print_if_true(thing, check): 
	'''
	Prints the first argument if a second argument is true. 
	The operation is:
		1. Check whether the *second* argument is true.
		2. If it is, print the *first* argument. 
	'''
	if check:
    	print(thing)
# 打印输出一个函数的文档字符串
help(print_if_true)
# 只打印文档字符串
print(print_if_true.__doc__)


# 闭包(内部函数,一个被动态创建的可以记录 外部变量的函数。)
# 由另一个函数动态生成的函数,并且可以改变和存储函数外创建的变量的值。

# 匿名函数:lambda()函数
  1. 生成器
    生成器是用来创建 Python 序列的一个对象。
    每次迭代生成器时,它会记录上一次调用的位置,并且返回下一个值。
    生成器函数,用yield来返回值而不是return。

  2. 装饰器
    有时你需要在不改变源代码的情况下修改已经存在的函数。
    装饰器实质上是一个函数。它把一个函数作为输入并且返回另外一个函数。
    靠近函数定义(def 上面)的装饰器最先执行。

>>> def document_it(func):
... 	def new_function(*args, **kwargs):
... 		print('Running function:', func.__name__)
... 		print('Positional arguments:', args)
... 		print('Keyword arguments:', kwargs)
... 		result = func(*args, **kwargs)
... 		print('Result:', result)
... 		return result
... 	return new_function
  1. 命名空间和作用域
    global关键字可以获取全局变量。
    • locals() 返回一个局部命名空间内容的字典;
    • globals() 返回一个全局命名空间内容的字典。

  2. 异常操作
    except exceptiontype as name

short_list = [1, 2, 3] >>> position = 5
try:
	short_list[position] 
except:
		print('Need a position between 0 and', len(short_list)-1, ' but got', position)


try:
	position = int(value) print(short_list[position])
except IndexError as err: 
	print('Bad index:', position)
except Exception as other: 
	print('Something else broke:', other)


class UppercaseException(Exception):
	pass

words = ['eeenie', 'meenie', 'miny', 'MO'] >>> for word in words:
	if word.isupper():
		raise UppercaseException(word)

== 注意:以两个下划线 __ 开头和结束的名称都是 Python 的保留用法。==

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
蛋白质是生物体中普遍存在的一类重要生物大分子,由天然氨基酸通过肽键连接而成。它具有复杂的分子结构和特定的生物功能,是表达生物遗传性状的一类主要物质。 蛋白质的结构可分为四级:一级结构是组成蛋白质多肽链的线性氨基酸序列;二级结构是依靠不同氨基酸之间的C=O和N-H基团间的氢键形成的稳定结构,主要为α螺旋和β折叠;三级结构是通过多个二级结构元素在三维空间的排列所形成的一个蛋白质分子的三维结构;四级结构用于描述由不同多肽链(亚基)间相互作用形成具有功能的蛋白质复合物分子。 蛋白质在生物体内具有多种功能,包括提供能量、维持电解质平衡、信息交流、构成人的身体以及免疫等。例如,蛋白质分解可以为人体提供能量,每克蛋白质能产生4千卡的热能;血液里的蛋白质能帮助维持体内的酸碱平衡和血液的渗透压;蛋白质是组成人体器官组织的重要物质,可以修复受损的器官功能,以及维持细胞的生长和更新;蛋白质也是构成多种生理活性的物质,如免疫球蛋白,具有维持机体正常免疫功能的作用。 蛋白质的合成是指生物按照从脱氧核糖核酸(DNA)转录得到的信使核糖核酸(mRNA)上的遗传信息合成蛋白质的过程。这个过程包括氨基酸的活化、多肽链合成的起始、肽链的延长、肽链的终止和释放以及蛋白质合成后的加工修饰等步骤。 蛋白质降解是指食物中的蛋白质经过蛋白质降解酶的作用降解为多肽和氨基酸然后被人体吸收的过程。这个过程在细胞的生理活动中发挥着极其重要的作用,例如将蛋白质降解后成为小分子的氨基酸,并被循环利用;处理错误折叠的蛋白质以及多余组分,使之降解,以防机体产生错误应答。 总的来说,蛋白质是生物体内不可或缺的一类重要物质,对于维持生物体的正常生理功能具有至关重要的作用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值