Head First Python 学习札记 2016-04-06

Python术语:

BIF —————————— 内置函数,Python的内置函数,就比如说print()、isinstence()这样的函数就是Python的内置函数,这些内置函数的命名空间并不是 _ main _ 而是 _ builtins _
Python列表 —————— 是一个高层集合,原本设计为要存储一个“相关事物”的集合。列表并不关心这些事物的类型是什么,因为列表的存在只是为了提供一种机制,从而可以采用列表的形式存储数据。

1、Python列表的操作语句:

1、插入:insert(position,text)

2、追加内容到列表的末尾:append(text)

3、将列表的最后一个元素删除并返回:pop();删除指定位置的数,我们用Student.pop(2)

4、由于Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型,我们完全可以在list中包含各种数据:

>>> L = ['Michael', 100, True]

5、倒序访问list

可以用 -1 这个索引来表示最后一个元素:
类似的,倒数第二用 -2 表示,倒数第三用 -3 表示,倒数第四用 -4 表示:

6、对list中的某一个索引赋值,就可以直接用新的元素替换掉原来的元素,list包含的元素个数保持不变。

>>> L[-1] = 'Paul'

7、切片操作

取一个list的部分元素是非常常见的操作。比如,一个list如下,Python提供了切片(Slice)操作符,能大大简化这种操作。

>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']
>>> L[0:3]
['Adam', 'Lisa', 'Bart']

range()函数可以创建一个数列:

>>> range(1, 101)
[1, 2, 3, ..., 100]

请利用切片,取出:
1. 前10个数;
2. 3的倍数;
3. 不大于50的5的倍数。

L = range(1, 101)
print L[0:10]
print L[2::3] #从2开始每隔3个数取一个数
print L[4:50:5]#从4开始到50每隔5个数取一个数

8、倒序切片

对于list,既然Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片,试试:

>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']
>>> L[-2:]
['Bart', 'Paul']
>>> L[:-2]
['Adam', 'Lisa']
>>> L[-3:-1]
['Lisa', 'Bart']
>>> L[-4:-1:2]
['Adam', 'Bart']

记住倒数第一个元素的索引是-1。倒序切片包含起始索引,不包含结束索引。
任务
利用倒序切片对 1 - 100 的数列取出:
* 最后10个数;
* 最后10个5的倍数。

>>> L = range(1, 101)
>>> print L[-10:]
[91, 92, 93, 94, 95, 96, 97, 98, 99, 100]
>>> print L[-46::5]
[55, 60, 65, 70, 75, 80, 85, 90, 95, 100]

9、对字符串切片

字符串 ‘xxx’和 Unicode字符串 u’xxx’也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:

>>> 'ABCDEFG'[:3]
'ABC'
>>> 'ABCDEFG'[-3:]
'EFG'
>>> 'ABCDEFG'[::2]
'ACEG'

字符串有个方法 upper() 可以把字符变成大写字母:

>>> 'abc'.upper()
>>>'ABC'

但它会把所有字母都变成大写。请设计一个函数,它接受一个字符串,然后返回一个仅首字母变成大写的字符串。

提示:利用切片操作简化字符串操作。

>>> def firstCharUpper(s):
        return s[0].upper() + s[1:]

>>> print firstCharUpper('hello')
Hello
>>> print firstCharUpper('sunday')
Sunday
>>> print firstCharUpper('september')
September

10、生成列表

要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11):
但如果要生成[1x1, 2x2, 3x3, …, 10x10],可以用循环:

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

任务

请利用列表生成式生成列表 [1x2, 3x4, 5x6, 7x8, …, 99x100]

>>> print [x * (x+1) for x in range(1,100,2)]
[2, 12, 30, 56, 90, 132, 182, 240, 306, 380, 462, 552, 650, 756, 870, 992, 1122, 1260, 1406, 1560, 1722, 1892, 2070, 2256, 2450, 2652, 2862, 3080, 3306, 3540, 3782, 4032, 4290, 4556, 4830, 5112, 5402, 5700, 6006, 6320, 6642, 6972, 7310, 7656, 8010, 8372, 8742, 9120, 9506, 9900]

2、Python的注释:

#print('Hello World')
"""print('Hello world')"""
'''print('Hello world')'''

3、for循环

注意if和else后面加冒号

for each_flick in movies:
        print(each_flick)

4、while循环

注意while后面加冒号

count = 0
while count< len(movies):
    print(movies[count])
    count = count + 1

5、如和在字符串中包含一个双引号

print('"你好,世界。"')   #用''""包含起来
print("\"你好,世界。\"") #使用\"转义字符

6、Python的标示符命名规则

以一个字母字符或一个下划线开头,接下来可以包含任意个字母字符、数字和/或者下划线。
Python是对字母大小写敏感的。msg和MSG是不同的变量

7、在列表中存储列表和遍历列表、利用isinstance()来检查Python中变量的的数据类型

注意:Pythopn中的if和else后面都是有:的
isinstance(变量名, 数据类型)会返回一个boolean值,当isinstance中的变量属于相应的变量名的时候,就返回true否则返回false,数据类型和,之间必须有一个空格。

movies = ["The Holy Grail",1975,"Terry Jones $ Terry Gilliam",91,
             ["Graham Chapman",["Michael Palin","John Cleese",
                   "Terry Gillam","Eric Idle","Terry Jones"]]]
print(movies[4][1][3])
print()
for each_item in movies:
    print(each_item)

#含有条件判断的遍历,因为是三层嵌套的列表,所以,我们使用两个地方语句做层层判断
for each_item in movies:
    if isinstance(each_item, list):
        for each_InnerItem in each_item:
             if isinstance(each_InnerItem, list):
                 for nest_item in each_InnerItem:
                        print(nest_item)
             else:
                 print(each_InnerItem)
    else:
        print(each_item)

8、在Python中创造一个函数

使用

    def 函数名(参数表):
            函数体

这样的格式来完成函数的声明

实例:

print("调动函数来遍历多层列表:")
def print_lol(the_list):
    for item in the_list:
        if isinstance(item, list):
            print_lol(item)
        else:
            print(item)
print_lol(movies)

9、在因特网上分享你的代码

加注释,使用了三重引号而没有将字符串赋值给一个变量的时候,会被Python解释器认为是一个注释

如何查看你电脑上的默认搜索模块的路径?在IDLE中输入 import sys; sys.path(两句话放在一行),就能得到一个位置列表,Python解释器就是在这些位置搜索模块的。

10、安装模块的和预执行模块的方法,安装模块之后,如果修改了模块里的源码,就必须重新安装,这样很麻烦所以不建议这样做,建议使用预执行方法。

预执行方法、

在Python的安装目录里面找到Python35-32\Lib\site-packages中的dir.pth本文文件,在里面加上你想要设置的路径,例如:E:\Python_WrokSpace\package。然后把你写好的&&&.py文件放到E:\Python_WrokSpace\package中,再在IDLE或者Python编辑器里输入

import &&&
&&&.函数名()

就能使用你自己导入模块里的方法了

安装模块、
1、创建名为&&&.py的Python文件
2、任意一处创建名为&&&的文件夹,将&&&.py放到其中
3、在文件夹中新建一个名为setup.py的Python文件
内容:

from distutils.core import setup
setup(
          name         = 'nester',
          version      = '1.0.0',
          py_modules   = ['nester'],
          author       = 'hfpython',
          author_email = '[email protected]',
          url          = 'http://www.onclick.ac.cn',
          description  = 'A simple printer of nested lists',
        )

4、在&&&文件夹里面打开Dos窗口依次输入命令:C:\Users\Tony\AppData\Local\Programs\Python\Python35-32\python.exe setup.py sdist
C:\Users\Tony\AppData\Local\Programs\Python\Python35-32\python.exe setup.py install
5、在Python文件中导入&&&模块:在IDLE或者Python编辑器里输入

  import &&&
  &&&.function()

就完成了对模块中函数的引入和调用了。
当然还可以通过

from module import function
function() 

来调用模块中的函数,不过,这种不使用命名空间的调用方法会导致本地Python的同名方法被覆盖

11、启动先清屏IDLE的方法

在python.exe文件夹里面新建一个py文件,内容是
import os
os.system(“cls”);
os.system(“python.exe”);
保存之后用它来启动python.exe(IDLE)就是先执行了清屏操作

12、在Python中调用Java

第一步、编译
第二步、写Python
第三步、
import os
os.system(“java Java文件名”);
input()

你可能感兴趣的:(Head First Python 学习札记 2016-04-06)