python笔记1

来源:互联网 发布:如何复制淘宝店铺宝贝 编辑:程序博客网 时间:2024/05/12 21:11

    第一天学习python。下了很多电子书,但一本也没有去看。采取了中军突破战术。下了programming python的源代码,边读,边运行调试,边思考。感觉挺棒。


python笔记1

1.raw_input()

    这个函数可以让py文件的执行暂停。让程序员可以看到程序运行结果。


2.os.getcwd()
该函数不需要传递参数,它返回当前的目录。需要说明的是,当前目录并不是指脚本所在的目录,而是所运行脚本的目录。例如,在PythonWin中输入如下脚本。

   1. >>> import os 
   2. >>> print 'current directory is ',os.getcwd() 
   3. current directory is D:/Python25/Lib/site-packages/pythonwin 

这里是PythonWin的安装目录如果将上述内容写入pwd.py,假设pwd.py位于E:/book/code目录,运行Windows的命令行窗口,进入E:/book目录,输入code/pwd.py,输出如下所示。

   1. E:/book>code/pwd.py 
   2. current directory is E:/book


3.python的控制流

A.for循环

for x in 'spam':
    print(x) 


B.while循环

x = 4
while x > 0:
    print('spam!' * x)

    x -= 1


C.if语句

if not 'f' in D:               
    print('missing')

else:

    print('found')


4.sys库

import sys                # Load a library module
print(sys.platform)


5.math

import math导入math库

A.求次方

2 ** 8


B.计算一个数值有多少位

len(str(2 ** 1000000))


C.圆周率

math.pi


D.求平方

math.sqrt(85)


E.设置精度

>>> decimal.getcontext().prec = 2
>>> decimal.Decimal('1.00') / decimal.Decimal('3.00')
Decimal('0.33')
notes:
通过decimal.getcontext().prec可以设置数学运算的精度


F.分数

f = Fraction(2, 3)




6.字符串

A.'zoe' 定义字符串

B.'zoe'+'tony' 字符串相连


C.求字符串长度

S = 'Spam'

len(S)


D.字符串的索引操作方法

S = 'Spam'

S[0],S[-1],S[1:3] ,S[1:],S[:-1]

notes:
最后一个索引的字符会被放弃

字符串的内容不能修改。就是说,字符串是常量。


E.寻找,替换目标内容

S = 'Spam'

S.find('pa')

返回值是目标内容在字符串中的索引

S.replace('pa', 'XYZ')

replace的返回值是新的字符串,原有字符串不改变。


F.带分隔符(逗号)的字符串与数组之间的转换

line = 'aaa,bbb,ccccc,dd'

array=line.split(',')

print(array)

['aaa', 'bbb', 'ccccc', 'dd']


G.判断字符串中的字符是否全部为英文字符

S.isalpha()

'1','we,are'都不算全是字母。

H.去除空格,换行符

line = 'aaa,bbb,ccccc,dd/n'

line = line.rstrip()


H.字符串的格式化

1.'%s, eggs, and %s' % ('spam', 'SPAM!')

2.'{0}, eggs, and {1}'.format('spam', 'SPAM!')


6A.数值转换成字符串

A.str(2 ** 3)


7A.字符串转换成数字

import decimal                     # Decimals: fixed precision
d = decimal.Decimal('3.141')
d + 1


7.import语句的使用

#### file: myfile.py

title = "The Meaning of Life"

A.>>> import myfile               # Run file; load module as a whole
>>> print(myfile.title)         # Use its attribute names: '.' to qualify
The Meaning of Life


B.>>> from myfile import title    # Run file; copy its names
>>> print(title)                # Use name directly: no need to qualify
The Meaning of Life


8.dir函数

----------------------------------------------转载----------------------------------------------------

可以使用内建的dir函数来列出模块定义的标识符。标识符有函数、类和变量。

当你为dir()提供一个模块名的时候,它返回模块定义的名称列表。如果不提供参数,它返回当前模块中定义的名称列表。

使用dir函数

例8.4 使用dir函数

$ python
>>> import sys
>>> dir(sys) # get list of attributes for sys module
['__displayhook__', '__doc__', '__excepthook__', '__name__', '__stderr__',
'__stdin__', '__stdout__', '_getframe', 'api_version', 'argv',
'builtin_module_names', 'byteorder', 'call_tracing', 'callstats',
'copyright', 'displayhook', 'exc_clear', 'exc_info', 'exc_type',
'excepthook', 'exec_prefix', 'executable', 'exit', 'getcheckinterval',
'getdefaultencoding', 'getdlopenflags', 'getfilesystemencoding',
'getrecursionlimit', 'getrefcount', 'hexversion', 'maxint', 'maxunicode',
'meta_path','modules', 'path', 'path_hooks', 'path_importer_cache',
'platform', 'prefix', 'ps1', 'ps2', 'setcheckinterval', 'setdlopenflags',
'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout',
'version', 'version_info', 'warnoptions']
>>> dir() # get list of attributes for current module
['__builtins__', '__doc__', '__name__', 'sys']
>>>
>>> a = 5 # create a new variable 'a'
>>> dir()
['__builtins__', '__doc__', '__name__', 'a', 'sys']
>>>
>>> del a # delete/remove a name
>>>
>>> dir()
['__builtins__', '__doc__', '__name__', 'sys']
>>>

它如何工作

首先,我们来看一下在输入的sys模块上使用dir。我们看到它包含一个庞大的属性列表。

接下来,我们不给dir函数传递参数而使用它——默认地,它返回当前模块的属性列表。注意,输入的模块同样是列表的一部分。

为了观察dir的作用,我们定义一个新的变量a并且给它赋一个值,然后检验dir,我们观察到在列表中增加了以上相同的值。我们使用del语句删除当前模块中的变量/属性,这个变化再一次反映在dir的输出中。

关于del的一点注释——这个语句在运行后被用来 删除 一个变量/名称。在这个例子中,del a,你将无法再使用变量a——它就好像从来没有存在过一样。


9.print函数

可以用逗号分隔要打印的内容

a = 'dead'         # Define three attributes
b = 'parrot'       # Exported to other files
c = 'sketch'
print(a, b, c)     # Also used in this file

output : ('dead', 'parrot', 'sketch')


10.exec函数

可以用来执行py文件的内容

exec(open('script1.py').read())
win32
65536
Spam!Spam!Spam!Spam!Spam!Spam!Spam!Spam!


11.随机数库random

import random

A.random.random()

B.random.choice([1, 2, 3, 4])       #从1,2,3,4这几个数中随机选一个。


12.数组

A.定义数组

L = [123, 'spam', 1.23]   

L = [1] * 100


B.取数组的值

L[0],L[:-1]


C.连接两个数组,生成新的数组

L + [4, 5, 6]


D.添加新的元素

L.append('NI')

"+" 这个符号可以用来生成新的list,但不改变旧的list
"append" 这个函数可以改变旧的list


F.删除旧的元素

L.pop(2) 

"pop"这个函数的意思不是堆栈的pop,而是删除指定索引的值。


G.数组排序

>>> M = ['bb', 'aa', 'cc']
>>> M.sort()


H.按倒序重排数组中的元素

M = ['bb', 'aa', 'cc']

M.reverse()


I.定义2维数组

>>> M = [[1, 2, 3],          # A 3 ?3 matrix, as nested lists
                [4, 5, 6],          # Code can span lines if bracketed
                [7, 8, 9]]


J.取二维数组,特定列的值

col2 = [row[1] for row in M]     # Collect the items in column 2

row[1]是指每行第二个元素

[row[1] + 1 for row in M]

[row[1] for row in M if row[1] % 2 == 0]


-------------------------------------------------------------转载---------------------------------------------------------------------------

  • list是一个使用方括号括起来的有序元素集合。     
  • List 可以作为以 0 下标开始的数组。任何一个非空 list 的第一个元素总是 li[0]     
  • 负数索引从 list 的尾部开始向前计数来存取元素。任何一个非空的 list 最后一个元素总是 li[-1]。 如果负数索引使您感到糊涂, 可以这样理解: li[-n] == li[len(li) - n]。 所以在这个 list 里, li[-3] == li[5 - 3] == li[2]。     
  • 您可以通过指定 2 个索引得到 list 的子集, 叫做一个 “slice” 。返回值是一个新的 list, 它包含了 list 中按顺序从第一个 slice 索引 (这里为 li[1]) 开始, 直到但是不包括第二个 slice 索引 (这里为 li[3]) 的所有元素。     
  • 如果将两个分片索引全部省略, 这将包括 list 的所有元素。但是与原始的名为 li 的 list 不同, 它是一个新 list, 恰好拥有与 li 一样的全部元素。li[:] 是生成一个 list 完全拷贝的一个简写。     
  •   append 向 list 的末尾追加单个元素。     
  • insert 将单个元素插入到 list 中。数值参数是插入点的索引。请注意, list 中的元素不必唯一, 有有两个独立的元素具有 'new' 这个相同的值。     
  • extend 用来连接 list。请注意不要使用多个参数来调用 extend, 要使用一个 list 参数进行调用。     
  • Lists 的两个方法 extend 和 append 看起来类似, 但实际上完全不同。 extend 接受一个参数, 这个参数总是一个 list, 并且添加这个 list 中的每个元素到原 list 中     
  • 另一方面, append 接受一个参数, 这个参数可以是任何数据类型, 并且简单地追加到 list 的尾部。 在这里使用一个含有 3 个元素的 list 参数调用 append 方法。     
  • index 在 list 中查找一个值的首次出现并返回索引值。     
  • 要测试一个值是否在 list 内, 使用 in, 如果值存在, 它返回 True, 否则返为 False 。     
  • remove 从 list 中删除一个值的首次出现。     
  • pop 是一个有趣的东西。它会做两件事: 删除 list 的最后一个元素, 然后返回删除元素的值。请注意, 这与 li[-1] 不同, 后者返回一个值但不改变 list 本身。也不同于 li.remove(value), 后者改变 list 但并不返回值。     
  • Lists 也可以用 + 运算符连接起来。 list = list + otherlist 相当于 list.extend(otherlist)。 但 + 运算符把一个新 (连接后) 的 list 作为值返回, 而 extend 只修改存在的 list。 也就是说, 对于大型 list 来说, extend 的执行速度要快一些。     
  • Python 支持 += 运算符。 li += ['two'] 等同于 li.extend(['two'])。 += 运算符可用于 list, 字符串和整数, 并且它也可以被重载用于用户自定义的类中。     
  • * 运算符可以作为一个重复器作用于 list。 li = [1, 2] * 3 等同于 li = [1, 2] + [1, 2] + [1, 2], 即将三个 list 连接成一个。

-------------------------------------------------------------------------------------------------------------------------------------------


13.字典

A.定义字典

1.{i : sum(M[i]) for i in range(3)}       # Creates key/value table of row sums

2.D = {'food': 'Spam', 'quantity': 4, 'color': 'pink'}

3.

D = {}
D['name'] = 'Bob'          # Create keys by assignment
D['job'] = 'dev'
D['age'] = 40


B.获得字典的索引生成数组

D = {'a': 1, 'b': 2, 'c': 3}

Ks = list(D.keys())


C.动态增长字典

D={'a': 1, 'c': 3, 'b': 2}
D['e'] = 99                      # Assigning new keys grows dictionaries 增加新的元素


-----------------------------------------------------------------------------------转载---------------------------------------------------------------------------------------------

  • Dictionary 是 Python 的内置数据类型之一, 它定义了键和值之间一对一的关系。     
  • 每一个元素都是一个 key-value 对, 整个元素集合用大括号括起来     
  • 您可以通过 key 来引用其值, 但是不能通过值获取 key     
  • 在一个 dictionary 中不能有重复的 key。给一个存在的 key 赋值会覆盖原有的值。 在任何时候都可以加入新的 key-value 对。这种语法同修改存在的值是一样的。     
  • 当使用 dictionary 时, 您需要知道: dictionary 的 key 是大小写敏感的     
  • Dictionary 不只是用于存储字符串。Dictionary 的值可以是任意数据类型, 包括字符串, 整数, 对象, 甚至其它的 dictionary。在单个 dictionary 里, dictionary 的值并不需要全都是同一数据类型, 可以根据需要混用和匹配。 Dictionary 的 key 要严格多了, 但是它们可以是字符串, 整数和几种其它的类型 (后面还会谈到这一点) 。也可以在一个 dictionary 中混用和配匹 key 的数据类型     
  • del 允许您使用 key 从一个 dictionary 中删除独立的元素。     
  • clear 从一个 dictionary 中清除所有元素。注意空的大括号集合表示一个没有元素的 dictionary。

-----------------------------------------------------------------------------------------------------------------------------------------------


14.元组

    tuple是python中一个相对简单的类型,它的特点是:有顺序的、不可变的。因此,很显然地tuple有像list和string一样的 indexing和slicing(分片)的功能,可以通过标号对成员进行访问。

A.定义tuple

T = (1, 2, 3, 4) 


B.元组的值

T[0]


C.连接两个元组,生成新的元组

 T + (5, 6)

--------------------------------------------------------转载-----------------------------------------------------------------------------

  • Tuple 是不可变 list。 一旦创建了一个 tuple 就不能以任何方式改变它。     
  • 定义 tuple 与定义 list 的方式相同, 除了整个元素集是用小括号包围的而不是方括号。     
  • Tuple 的元素与 list 一样按定义的次序进行排序。 Tuples 的索引与 list 一样从 0 开始, 所以一个非空 tuple 的第一个元素总是 t[0]。     
  • 负数索引与 list 一样从 tuple 的尾部开始计数。     
  • 与 list 一样分片 (slice) 也可以使用。注意当分割一个 list 时, 会得到一个新的 list ;当分割一个 tuple 时, 会得到一个新的 tuple。     
  • Tuple 没有方法:没有 append 或 extend 方法、没有 remove 或 pop 方法、没有 index 方法、可以使用 in 来查看一个元素是否存在于 tuple 中。

-----------------------------------------------------------------------------------------------------------------------


15.集合

A.定义集合

X = set('spam')  2.6 version ruby

Y = {'h', 'a', 'm'}   3.0 version ruby

{x ** 2 for x in [1, 2, 3, 4]}


----------------------------------------------------------------------------转载--------------------------------------------------------------------------------------------

python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.

sets 支持 x in set, len(set), 和 for x in set。作为一个无序的集合,sets 不记录元素位置或者插入点。因此,sets 不支持 indexing, slicing, 或其它类序列(sequence-like)的操作。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


16.布尔值

False, True

True==1


17.判断变量类型

type(L)


18.定义类

class Worker:
        def __init__(self, name, pay):       # Initialize when created
            self.name = name                 # self is the new object
            self.pay = pay
        def lastName(self):
            return self.name.split()[-1]     # Split string on blanks
        def giveRaise(self, percent):
            self.pay *= (1.0 + percent)      # Update pay in-place


>>> bob = Worker('Bob Smith', 50000)         # Make two instances
>>> sue = Worker('Sue Jones', 60000)         # Each has name and pay attrs
>>> bob.lastName()                           # Call method: bob is self
'Smith'
>>> sue.lastName()                           # sue is the self subject
'Jones'
>>> sue.giveRaise(.10)                       # Updates sue's pay
>>> sue.pay

1.类的每个方法中必须带self参数。self相当于以前的this。
2.用return才有返回值。
3.类的构造函数是_init_方法




原创粉丝点击