Python学习笔记(Python基础)

1.Python语句以:结尾时,缩进的语句视为代码块;

2.Python程序是大小写敏感的;

3.输出字符串用 '' or "" ,单引号里面显示字符需要用转义字符,r''表示''内部的字符串默认不转义;

4.'''...'''表示多行字符串,在IDE中不需要自己输入... ;

print('''Line1
Line2
Line3''')
View Code

5.空值用None表示;

6.Python中可以把任意类型赋值给变量,这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言(定义时必须指定变量类型);

7./除法计算结果用于是浮点数,//除法计算结果只取整数部分,取余用%

8.Python整数与浮点数类型没有像其他语言那样有8位16位等大小限制,超出一定范围直接表示为inf(无限大);

9.Python的字符串类型是str,内存中以Unicode表示(2个字节),ord()可以将字符转为Unicode编码,chr()可以将Unicode的编码转为字符;

10.b'ABC'表示字节类型,每个字符只占用一个字节,str与bytes互转如下

print('ABC'.encode('ascii'))
print('中文'.encode('utf-8'))
print(b'ABC'.decode('ascii'))
print(b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8'))
#如果bytes中只有一小部分无效的字节,可以传入ignore忽略错误的字节
print(b'\xe4\xb8\xad\xe6\x96\x87\xff'.decode('utf-8',errors='ignore'))
View Code

 11.len()函数计算的是str字符数,如果换成byteslen()函数计算的是字节数:

print(len('中文')) #字符数
print(len('中文'.encode('utf-8'))) #字节数
View Code

 12.在Python解释器读取源代码时,通常在文本文件的开头加上

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

 并且.py文件保存时也需要使用UTF-8编码(中文3字节/英文1字节)

13.占位符格式化字符串输出

lastScore = 72
newScore = 85
print('小明成绩从去年的%d分提升到今年的%d分,提升了%.1f%%'%(72,85,(85-72)/85*100))
# 或者使用format
print('小明成绩从去年的{0}分提升到今年的{1}分,提升了{2:.1f}%'.format(72,85,(85-72)/85*100))
View Code

不使用format的情况下,在占位符中如果要输出"%"符号,则需要用"%%";

print('%.5s' % '1234567')

 使用".5s"可以截取字符串前5位,使用".2f"可以保留数字两位小数;

 14.有序list集合

# list有序集合,可以添加和删除其中的元素
fruits = ['Apple','Banana','Pear','Peach']
print(fruits)
print('len=%d'%len(fruits))
print('delete \'%s\'' % fruits.pop()) # 删除集合末尾元素 or pop(i)
fruits.append('orange') # 添加元素到末尾 or list.insert(i,'orange')
View Code

list集合里面的元素可以是任意不同的类型,甚至可以是list数组

lan = ['C#',12,['ASP','JSP'],'Java'] # 数组长度为4
print(lan[2][1]) # 输出JSP

15.有序tuple元组

元组与list类似,但是tuple一旦初始化,其中元素就不能重新赋值(不能修改对象指向),并且没有pop()、insert()、append()等方法,但是如果其中的元素是list,list中的元素是可变的(tuple本身指向的list地址没有变)。

声明tuple:

t = (1,2,3)
t = () # 空的tuple
t = (1,) # 含有1个元素的tuple(注意必须加,)
print(type(t)) # 输出<class 'tuple'>
t = (1) # 注意这样的写法不是tuple,而是数值1
print(type(t)) # 输出<class 'int'>
View Code

 

16.循环 for x in.

for i in range(10):
    print(i)

等效于其他语言的:

for(int i = 0;i < 10;i++)
{
    print(i);
}

range()函数可以生成一个整数序列,如:

# range(start,stop[,step])
print(list(range(2,20,2)))
# 输出 [2, 4, 6, 8, 10, 12, 14, 16, 18]
print(list(range(0, -10, -1)))
# 输出 [0, -1, -2, -3, -4, -5, -6, -7, -8, -9]

17.dict

键值对集合,内部实现是Hash,key必须是不可变对象,因为必须保证每次计算相同的key得出的哈希值是相同的,如果存放的key是list,将会导致dict内部混乱。

d = {'Lance':90,'Justine':100,'Alice':95}
print(d)

d['Lance'] = 92
print(d['Lance']) # 92

# print(d['Bob']) key不存在会报错误
# Traceback (most recent call last):
#   File "C:\Users\Zheng\Desktop\JustWriteIt.py", line 5, in <module>
#     print(d['Bob'])
# KeyError: 'Bob'

# 新增 key-value
d['Kim'] = 99
print(d)

# 删除 key-value 
# pop(key[, default]) 如果key存在则删除并返回默认值,如果key不存在则返回默认值
# 如果没有写,default,那么key不存在时会报KeyError
d.pop('Alice')
print(d)

# 判断key是否存在于字典中
print('Lance' in d)
print(d.get('Lance'))       # 92
print(d.get('Alice'))       # None
print(d.get('Alice',60))    # 60

 

18.set

set和dict类似,是一组key的集合,并且key不重复。

初始化set需要提供一个list作为输入集合,如果list中有重复的值将会被过滤,并且set不是有序的。

set同样不可以放入可变对象,因为无法判断两个可变对象是否相等。

s = set([1,1,2,3,9,5,4])
print(s) # {1, 2, 3, 4, 5, 9}

s.add(10) # 添加重复key没有效果
s.remove(3)
# s.remove(6) 删除不存在的key会报错
print(s) # {1, 2, 4, 5, 9, 10}

# 交集与并集计算
s1 = set([1,2,3])
s2 = set([2,3,4])
print(s1 & s2) # {2, 3}
print(s1 | s2) # {1, 2, 3, 4}

 

19.不可变对象

对于不可变对象,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本想永远是不可变的。

假如有一个tuple等于(1,2,3),则其可以作为dict的key或者value,也可以作为set的key,因为tuple是不可变类型。

而如果tuple等于(1,[2,3]),则其不可以放入dict或者set中,因为其中的list是可变类型。

posted @ 2019-07-29 23:33  Z大山  阅读(259)  评论(0编辑  收藏  举报