千⾏代码⼊门Python
开篇:
这篇⼤部分的内容是直接转⾃知乎《千⾏代码⼊门Python》中间也加了很多,再写这篇的时候,发现我⾃⼰也遗忘了很多基础知识点, 所以⼀边巩固基础, ⼀边填完了这个坑
1. Python 数据类型: 哈希类型、不可哈希类型# 哈希类型'数字类型: int, float, decimal.Decimal, fractions.Fraction, complex''字符串类型: str, bytes''元组: tuple''冻结集合:frozenset''布尔类型: True, False''None'# 不可哈希类型: 原地可变类型:list 、dict 和set 。他们不可以作为字典的key # 哈希类型----------------------------------------------# =======================================================================a = 1211type(a)  # int 类型 1, 0, 999b = 1
2.3type(b)  # float 类型, 1., 0., 1.2e-10c = 'hello, world'type(c)  # str 类型, 字符串等d = bytes(2)type(d)  # bytes 类型 b'\x00\x00', 其中bytes()函数可以直接进⾏强制类型转化tuple1 = (2, 3, 4)type(tuple1)  # tuple 类型, 称作元组bool1 = False type(bool1)  # 布尔类型, bool 类型, True or False x = None type(x)  # NoneType 空类型# ========================数字相关模块======================================================import  decimal from  decimal i
mport  Decimal dec = Decimal('0.01') + Decimal('0.02')  # decimal.Decimal 类型 返回Decimal('0.03')  数字相关模块type(dec)from  fractions import  Fraction x = Fraction(4, 6)  # 分数类型 4/6x = Fraction('0.25')  # fractions.Fraction 类型 分数类型1/4 接收字符串类型的参数type(x), type(dec)# 不可哈希类型-----------------------------------------------------list1 = [1, 2, 3, 4, 4]  # 可使⽤type()函数查看其类型, 后⾯将不再写出,list 类型(列表)set1 = set(list1)  # 集合set , 使⽤set()函数可以将list , tuple 类型的数据强制转化成set ,#并且可以达到去重的作⽤dict1 = {1: 'hello', 2: 'world'}for  key, value in  dict1.items():    print('%s:%s' %(key, value))  # 字典类型, 同样可以使⽤dict()函数进⾏强制转换# 可以使⽤for 循环将并调⽤dict 的items ⽅法将key 和value 分别打印出来
1
2
3
4
5
6
7
8
9
10python新手函数
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
2. 数字常量
3. 数字的表达式操作符
4. 整数可以利⽤bit_length 函数测试所占的位数
5. Python 中的魔法⽅法repr 和str 显⽰格式的区别
6. 集合set 1234, -1234, 0, 999999999                    # 整数1.23, 1., 3.14e-10, 4E210, 4.0e+210          # 浮点数0o177, 0x9ff , 0X9FF , 0b101010                # ⼋进制、⼗六进制、⼆进制数字3+4j , 3.0+4.0j , 3J                            # 复数常量,也可以⽤complex(real, image)来创建hex(I), oct(I), bin(I)                      # 将⼗进制数转化为⼗六进制、⼋进制、⼆进制表⽰的“字符串”int(string, base)                            # 将字符串转化为整数,base 为进制数# 2.x 中,有两种整数类型:⼀般整数(32位)和长整数(⽆穷精度)。可以⽤l 或L 结尾,迫使⼀般整数成为长整数float('inf'), float('-inf'), float('nan')    # ⽆穷⼤, ⽆穷⼩, ⾮数
1
2
3
4
5
6
7
8yield  x                                      # ⽣成器函数发送协议lambda  args: expression                      # ⽣成匿名函数x if  y else  z                                # 三元选择表达式x and  y, x or  y, not  x                      # 逻辑与、逻辑或、逻辑⾮x in  y, x not  in  y                          # 成员对象测试x is  y, x is  not  y                          # 对象实体测试x<y, x<=y, x>y, x>=y, x==y, x!=y            # ⼤⼩⽐较,集合⼦集或超集值相等性操作符1 < a < 3                                    # Python 中允许连续⽐较x|y, x&y, x^y                                # 位或、位与、位异或x<<y, x>>y                                  # 位操作:x 左移、右移y 位+, -, *, /, //, %, **                        # 真除法、floor 除法:返回不⼤于真除法结果的整数值、取余、幂运算-x, +x, ~x                                  # ⼀元减法、识别、按位求补(取反)x[i], x[i:j:k]                              # 索引、分⽚、调⽤int(3.14), float(3)                          # 强制类型转换
1
2
3
4
5
6
7
8
910
11
12
13
14  a = 1;      a.bit_length()    # 1a = 1024;    a.bit_length()    # 11
1
2__repr__() # 默认的交互模式回显, 产⽣的结果看起来他们就像是代码__str__() # 修改打印语句的格式,转化成⼀种对⽤户更加友好的格式# 例class  Vector(object):    def  __init__(self, x=0, y=0):        self.x = x        self.y = y    def  __repr__(self):        return  'Vector(%r, %r)' % (self.x, self.y)    def  __str
__(self):        return  '%s, %s' % (self.x, self.y)v1 = Vector(2, 3)# __repr__和__str__如果当只想实现这两个特殊⽅法的其中⼀个, 选择__repr__是更好的选择(来⾃流畅的Python)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
7. 集合frozenset , 不可变对象
8. 布尔类型
9. 列表"""    set 是⼀个⽆序不重复元素集, 基本功能包括关系测试和消除重复元素。    set ⽀持union(联合), intersection(交), difference(差)和symmetric difference(对称差集)等数学运算。    set ⽀持x in set, len(set), for x in set 。    set 不记录元素位置或者插⼊点, 因此不⽀持indexing, slicing, 或其它
类序列的操作    """s = set([3, 4, 2, 12, 221, 1421])  # 创建⼀个集合返回{2, 3, 4, 12, 221, 1421}t = set('hello')  # 创建⼀个唯⼀字符串的集合返回值{'e', 'h', 'l', 'o'}, 可见集合是⽆序的a = t.union(s)  # t 和s 的并集, 也可写成 t | s b = t.intersection(s)  # t 和s 的交集, 也可写成 t & s c = t.difference(s)  # 差集 也可写成 t - s d = t.symmetric_difference(s)  # 对称差集 也可以写成 t.add('x')  # 添加⼀个ve('h')  # 删除⼀个item s.update([10, 21, 42])  # 利⽤[...]更新s 集合s.issubset(t)  # 测试是否s 中的每⼀个元素都在t 中, 或写成 s <= t s.issuperset(t)  # 测试是否t 中的每⼀个元素都在s 中, 或写成 s >= t d = s.copy()  # 复制s.discard(2)  # 删除s 中的2s.clear()  # 清空s set1 = {x for  x in  [1, 2, 3, 4]}  # 集合⽣成式, 集合解析, 结果{1, 2, 3, 4}set1.pop()  # 由于set 是⽆序的,所有pop 并不⼀定是删除最后⼀个值
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23"""set 是可变对象,即不存在hash 值,不能作为字典的键值。同样的还有list 等(tuple 是可以作为字典key 的)frozenset 是不可变对象,即存在hash 值,可作为字典的键值frozenset 对象没有add 、remove 等⽅法,但有union/intersection/difference 等⽅法"""a = set([1, 2, 3])b = frozenset()b.add(a)                    # error: set 是不可哈希类型b.add(frozenset(a))          # ok ,将set 变为frozenset ,可哈希
1
2
3
4
5
6
7
8
9# 布尔类型a = True  # bool 类型, 真list1 = []if  list1:    print(True )else :    print(False )  # 当列表,字符串, 集合等长度为0的时候, 同样会返回False isinstance(False , int)  # bool 类型属于整数, 所以返回True True  == 1  # 返回True , 应为1对应的bool 值为True 所以两者相等True  is  1  # 返回False , 因为True 为bool 类型, int 类型类型不同,所以返回False
1
2
3
4
5
6
7
8
9
10
# 当然列表中肯定还存在多维列表,10. 字符串
11. 字符串补充str1 = 'hello, world'  # 字符串的创建⽅法str2 = '''    asldsldlasldlas. sldlasldsdxm,ck    asljdksadksakldk '''                    # 可以使⽤这种⽅法来进⾏对⾏字符串的赋值str1[::-1]  # 同样的字符串也可以像列表⼀样进⾏切⽚操作, 在这⾥就不多说了, 有兴趣的可以⾃⼰去尝试str1.upper()  # 全部改为⼤写的⽅法str1.lower()  # 全部改为⼩写的⽅法str1.strip()  # 删除两端空格的⽅法unt('l')
# 计算该字符串中,指定元素的个数str1.isdigit()  # 判断字符串中是否只有数字组成str1.isalpha()  # 判断字符串中是否只有字母组成str1.find('h')  # 从左开始查, 到第⼀个⾃定元素,便返回他的索引str1.rfind('l')  # 从右开始查, 到第⼀个指定元素, 便返回他的索引place(',', ':')  # 将字符串中指定的元素替换成另⼀个, 两个参数分别是, 字符串中的某个元素或者元素组合,  想要替换成的值sorted(str1)  # sorted 的⽅法可以对字符串的值进⾏排序,但是这样会返回⼀个列表类型str1.split(',')  # 将字符串已指定的字符进⾏分割, 返回⼀个列表, 返回['hello', ' world']# 由于字符串在使⽤list()函数进⾏强制类型转化的时候, 会将字符串中的所有元素都变成列表中的⼀个元素,# 所以⼤部分时间,想要对⼀个字符串进⾏列表形式的操作, 我们都可以使⽤split()将字符串分割成列表再进⾏操作S = ''                                  # 空字符串S = "spam’s"                            # 双引号和单引号相同S = "s\np\ta\x00m"                      # 转义字符S = """spam"""                          # 三重引号字符串,⼀般⽤于函数说明S = r'\temp'                            # Raw 字符串,不会进⾏转义,抑制转义S = b'Spam'                            # Python3中的字节字符串S = u'spam'                            # Python2.6中的Unicode 字符串s1+s2, s1*3, s[i], s[i:j], len(s)      # 字符串操作'a %s parrot' % 'kind'                  # 字符串格式化表达式'a {1} {0} parrot'.format('kind', 'red')# 字符串格式化⽅法for  x in  s: print(x)                    # 字符串迭代,成员关系[x*2 for  x in  s]                        # 字符串列表解析','.join(['a', 'b', 'c'])              # 字符串输出,结果:a,b,c # 字符串转换⼯具:int('42'), str(42)                      # 返回(42, '42')float('4.13'), str(4.13)                # 返回(4.13, '4.13')ord('s'), chr(115)                      # 返回(115, 's')int('1001', 2)         
                # 将字符串作为⼆进制数字,转化为数字,返回9bin(13), oct(13), hex(13)              # 将整数转化为⼆进制/⼋进制/⼗六进制字符串,返回('0b1101', '015', '0xd')#-- 另类字符串连接name = "wang" "hong"                    # 单⾏,name = "wanghong"name = "wang" \"hong"                          # 多⾏,name = "wanghong"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。