深度学习阶段一_Python基础03_04

07: 字典表dict 与元组 tuple

字典表dict:

                          字典通过键值,可以插入, 而列表不可以。

              申明:    第一种     {键:值,...}

                            第二种      dict(键=值)

              操作:   

                              获取        d['键']        或者     d.get('j键',默认值)

                              合并         d.update(d2)

                              属性         keys()键   ,  values()值   ,   items()键值

                             排序        将keys()放入列表  ,   使用全局函数sorted()

d = {'ISBN':'23412343','Title':'Python 入门','Price':39.00}
d['Title']
"""  'Python入门'   """

d['Author'] = 'Jerry'
"""  {'ISBN': '23412343', 'Title': 'Python 入门', 'Price': 39.0, 'Author': 'Jerry'} """

l = [1,2,3,4,5]
l[2]
"""  3   """

l[0] = 99
"""   [99,2,3,4,5]   """

l[8]
l[100]
""" 都报错 """

d.get('Price')
"""   39.0       p换成小写则找不到39.0,返回空"""
d.get('price',0.0)
"""   0.0   寻找一个不存在的数,返回0.0给我  """

emp = dict(name='Mike',age=20,job='dev')
"""   {'job':'dev','name':'Mike','age':20}
可以通过花括号申明,也可以通过dict来申明   """

len(emp)
"""    3   """

emp = {'job':'dev','name':'Mike','age':20}
dep = {'department':'技术部'}
emp.update(dep)
"""   {'job':'dev','department':'技术部','name':'Mike','age':20}   """
emp.pop(age)
"""   {'job':'dev','department':'技术部','name':'Mike'}   将年龄弹出了"""

emp.keys()
"""   doct_keys(['job','department','name'])   查看键"""
emp.values()
"""   dict_values(['dev','技术部','Mike'])   查看值   """
emp.items()
"""   dict_items([('job','dev'),('depaetment','技术部'),('name','Mike')])   查看全部  """

for k,v in emp.items():
    print('{} => {}'.format(k,v))
"""   job => dev ...   """

"""嵌套""" 
emp = {'age':20,'name':{'firstname':'Jerry','lastname':'Lee'},'dep':'行政部'}
emp.get('name')
"""   {'firstname':'Jerry','lastname':'Lee'}   """
emp['name']['firstname']
"""    'Jerry'    """

d = {'a':1,'b':2,'c':3,'d':4}
"""   打印d为:  {'c':3,'d':4,'a':1,'b':2}   """

ks = d.keys()
ks = list(d.keys)
ks.sort()
""" ['a','b','c','d']   想要排序,不能直接排,需要先弄个列表出来,再用sort()"""
for k in ks:
    print(d.get(k))
"""
1
2
3
4           排序方法一
"""

ks = d.keys()
for k in sorted(ks):
    print(k,d.get(k))
"""
a 1
b 2
c 3
d 4       排序方法二
"""

 

字典表是乱序的,因为程序机制,为了更快,使用了一种哈希算法。

元组tuple

特征: 任意对象有序集合

                  通过下标访问

                  属“不可变”类型

                  长度固定,任意类型,任意嵌套

(1,2) + (3,4)
"""   (1,2,3,4)   """

x = (4,)
"""  (40,)   定义单个元组   """

t = (1,2,3,4,5)
t[0] = 99  """这是错的"""

res = [x**2 for x in t]
"""   [1, 4, 9, 16, 25]   """

t.index(3)  """ 2 """
t.count(3)  """ 1 """

申明:   (元素,)

             index(val)    :查找索引

             count(val)   :统计数量

namedtuple:(可以先不管)

form collections import namedtuple
Employee = namedtuple('Employee',['name','age','department','salary'])
jerry = Employee(name='Jerry',age=30,department='财务部',salary=9000.00)
jerry.name
"""   'jerry'   """ 

08: 文件与类型汇总

文件:

基本语法    file = open('文件名',mode)

                  mode  

                              r                (读一个文件)

                              w               (写一个文件)

                              a                  (追加信息)

                              b                   (二进制)

                               +                     (可读可写)

myfile = open('hello.txt','w')
myfile.write('优品课堂\n')
"""   5     表示有5个字符,写入一个txt信息"""

f = open('hello.txt','r')
f.read()
""" 优品课堂\nhello worle!\n   """
f.read()
"""  ''   空的,read()就像指针"""

f = open('hello.txt')
f.readline()
"""   优品课堂\n   """
f.readline()
"""   'hello world!\n   逐行读取"""

l = open('hello.txt').readlines()
"""    ['优品课堂\n','hello world!\n']

for line in l:
    print(line)
"""   
优品课堂

hello world!
"""

f = open('course.txt','w')
f = open('course.txt','w',encoding='utf8')
f.write('优品课堂 Python教程\n')
f.write('www.codeclassroom.com')
f.close()
"""   写入文本文件   """

操作:

         read()             读取

         readline()       单行读取

         readlines()     全部读取

         close()           关闭文件

pickle存取Python对象:

         dump(对象,目标文件)

         load(文件)

        with open('sss.txt') as f:      (自动释放资源)

x,y,z = 1,2,3
l = [1,2,3]

f = open('datafile.txt','w')
f.write('{},{},{}'.format(x,y,z))
f.write(str(l))
f.close()

charts = open('datafile.txt').read()
"""   1,2,3\n[1,2,3]   """
d = {'a':1,'b':2}
f = open('datafile.pkl','wb')

import pickle
pickle.dump(d,f)  
 """把d放到f中去"""
f.close()

open('datafile.pkl','wb').read()
"""   b'\x80\x03}q\x00(X\x01\x00\x00\x00aq\x01K\x01X\x01\x00\x00\x00bq\x02K\x02u.'   """


f = open('datafile.pkl','rb')
data = pickle.load(f)
print(data)
"""   {'a': 1, 'b': 2}   """
data['a']
"""1"""
data.get('b')
"""2"""

f = open('course.txt')
l = f.readlines()
for line in l:
    print(line)
"""
都打印出来了,在这,但这种方法没有下面的好
"""

with open('cours.txt') as f
    for line in f.readlines()
        print(line)
"""
也都会打印出来,只是用with,会自动释放资源,不用再写close
"""

汇总:

        集合:      序列    可变的(列表list)       不可变(字符串str,元组tuple,字节数组)

                      映射    字典表dict

                      集合     Set

        数字:    整型    int     boolean

                        浮点型      float    Decimal  ......

 

        可调用:   函数function

                          生成器Generator

                          类class

                          方法

       其它:        文件

                          None

                          视图 。。。。

        内部:          Type

l = ['abc',[(1,2),([3],4)],5]

 

09: 语句,表达式与if分支

语句:

                  代码风格:代码格式指南:      

                                                             PEP8

                                                             缩进四个空格

                                                              一行不超过79

                                                               空行

                  赋值语句: 

                                     基本赋值

                                     序列赋值

                                     扩展序列解包赋值   *解包,后面带有列表      *变量,获取剩余元素到list

                                      多目标赋值     a = b = 0

                                      参数化赋值               

x = 5

(x,y) = (5,10)   
x,y = 5,10
"""    元组赋值都是一样的,都是给一个元组   """

[x,y,z] = [10,20,30]
x,y = y,x
[a,b,c] = (1,2,3)
"""   列表赋值   """

a,b,c = 'uke'
"""  a是u,b是k,c是e   """

a,b,c = 'you'
s = 'youpin'
a,b,c = s[0],s[1],s[2:]
"""   c包含后面所有的,当你想要一个字符串的特定位置时,用这种方法进行变通   """

a,b,*c = s
"""   前面是对应着来,后面是全部给c   """ 
a,*b,c = s
"""   前面后面是对应着来,中间全部给b  b是['o','u','p','i']   """ 
b = ''.join(b)
"""   'oupi'   通过join将字符串连接起来"""

a = 'uke'
b = 'uke'
a == b
"""   True   """
a is b 
"""   True   """
a = 'uke.cc'
b = 'uke.cc'
a == b
"""   True   """
a is b 
"""   False           和int的256是一样的,短的被缓存了共用,长的不行,以3为界或者啥的"""

a = b = c = 'uke'
""" a,b,c都是uke   """

a = b = []
a.append(3)
"""   a里面是[3],b里面也是[3]   """

a = []
b = []
a,b = [],[]
a.append(3)
"""   这两种,b都不会变    """

x = 5
b = 6
x = x + y
"""   x等于11   """
a,b = 1,2
a += b
"""   a为3   """

l = [1,2]
l += [9,10]
"""   l为[1,2,9,10]   """
l.extend([3,5,7])
"""   l为[1,2,9,10,3,5,7]     第二个效率更高""" 

列表赋值原因:

 

表达式:

          函数调用:

         方法调用:

         打印操作:print()

                                       sep='分隔符'

                                       end=‘终止符’

                                       file=指定文件

s = '优品课堂'
url = 'www.codeclassroom.com'
print(s,url)
"""   优品课堂 www.codeclassroom.com   """

print(s,url,sep='|')
"""   优品课堂|www.codeclassroom.com   以竖线分开"""

print(s,url,end='...\n')
"""   优品课堂 www.codeclassroom.com...  换行符看不见但是有    以竖线分开"""

print(s,url,end='...\n',file=open('result.txt','w',encoding='utf8'))

 流程控制:

             if语句:

                       一般格式

                      多重分支

                       三元运算符      a = Y if X else z

score = 75

if score >=90:
    print('优秀')
elif score >= 80:
    print('良')
elif score >= 60:
    print('及格')
else:
    print('不及格')
"""               """

def add(x)
    print(x+10)

operation = {
    'add' : add,
    'update' : lambda x: print(x*2),
    'delete' : lambda x: print(x*3)
}

def default_method(x):
    print('默认方法,什么都不做')

operation.get('add',default_method)(10)
"""  20   前面没找到合适的键值,就执行method"""

score = 75
#if score >= 60:
#    result = '及格'
#else:
#    result = '不及格'

result = '及格' if score >= 60 else '不及格'

"""   这个代码和前面的四个代码一个意思   """

              while循环

                           一般格式

                           break                       从大循环里面跳出来

                           continue                    跳到程序的头部

                           pass                        占位

                           else                         

x = 'youpinketang'

while x:
    print(x,end=' ')
    x = x[1:]
"""   越打越少  """

a,b = 0,10
while a < b:
    print(a)
    a += 1
"""   打印0123456789   """

x = 10

while x:
    x -= 1
    if x %2 != 0:
        continue
    print(x,end=' ')
"""  %取余   8 6 4 2 0 """

while True:
    name = input('请输入姓名:')
    if name == 'stop':
        break
    age = input('请输入年龄:')
    print('您好:{}, 您的年龄是:{}, 欢迎学习'.format(name,age))
print('循环结束')


for x in range(1,5):
    if x == 6:
        print('有这个数',x)
        break
else:
    print('未找到')

 for循环:       for x in 目标序列:

                       range()

                       enumerate()

for x in [1,2,3,4]: 
    print(x, end=' ')

sum = 0

for x in [1,2,3,4,5]:
for x in (1,2,3,4,5):
    sun += x
print(sum)
"""   15    累加列表和元组都可以   """

emp = {
    'name' : 'Tom',
    'department':'technoloty',
    'job' : 'development',
    'Salary':9000.00
}
for key in emp:
    print(key)
"""打印的键"""
    print('{} => {}'.format(key, emp[key]))
"""   department => technoloty
      job => development
      Salary => 9000.0       """

for value in emp.values()
    print(value)
"""   values()不是列表   """

"""找出两个列表中有没有交集"""
s1 = 'abcd.com'
s2 = 'efgh.com'
result = []
for x in s1:
    if x in s2:
        result.append(x)
print(result)
"""   ['c','o','m']   """

l = [x for in s1 if x in s2]
print(l)
"""    ['c','o','m']   找到交集"""

for x in range(1,100,2):
    print(x)
"""   打印1到99,并不包括100自己,100是个终止符  ,2是步长 """

s = 'youpinketang'

for (idx,item) in enumerate(s):
    print('{}) {}'.format(idx+1,item) )
"""
1) y
2) o
3) u
4) p
5) i
6) n
7) k
8) e
9) t
10) a
11) n
12) g
"""

 

                  

 

 

                           

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值