当前位置 : 主页 > 编程语言 > java >

Python小知识点(6)

来源:互联网 收集:自由互联 发布时间:2022-06-23
打印日历 import calendar c = calendar.month(2018, 8) print(c) August 2018 Mo Tu We Th Fr Sa Su 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 可变对象与不可变对象 不可变对象。传递引用

打印日历

>>> import calendar
>>> c = calendar.month(2018, 8)
>>> print(c)
August 2018
Mo Tu We Th Fr Sa Su
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

可变对象与不可变对象

  • 不可变对象。传递引用,会产生新的内存空间,在新的对象上重新引用。
  • 可变对象。可变对象在原来的基础上直接对数据进行修改,产生“影子”

改变字符串的一种方法

>>> l = list("string")
>>> l
['s', 't', 'r', 'i', 'n', 'g']
>>> l[0] = "x"
>>> l
['x', 't', 'r', 'i', 'n', 'g']
>>> s = ''.join(l)
>>> s
'xtring'

对列表的切片操作

>>> n = [1, 2, 3, 5, 6, 7, 8, 9, 10]
>>> n[0:10:2] # 对迭代对象n,范围为0~10,步长为2。划分为新列表。
[1, 3, 6, 8, 10]
>>> l = n[0:10:2]
>>> l
[1, 3, 6, 8, 10]

enumerate函数

语法

enumerate(sequence, [start=0])
  • sequence – 一个序列、迭代器或其他支持迭代对象。
  • start – 下标起始位置。

示例

>>> country = ["China", "USA", "Japan"]
>>> for i, j in enumerate(country):
... print(i, j)
...
0 China
1 USA
2 Japan

ZIP函数

将多个序列中的元素“配对”,从而产生一个新的元组列表。

示例

>>> country = ['China', 'USA', 'UK', 'Japan', 'Germany', 'France']
>>> continent = ['Asia','America', 'Euro', 'Asia', 'Euro', 'Euro']
>>> z = zip(country, continent, [1, 2])
>>> for i in z:
... print(i)
...
('China', 'Asia', 1)
('USA', 'America', 2)

pop函数与remove函数

pop()函数参数多为下标
remove()函数参数多为迭代元素中的值
二者均是删除函数

pop()移除列表中的一个元素(默认为最后一个),返回该元素的值

>>> country.pop(2)
'UK'
>>> country
['China', 'USA', 'Japan', 'Germany', 'France']
>>> country.pop('USA')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object cannot be interpreted as an integer
>>> country.remove('USA')
>>> country
['China', 'Japan', 'Germany', 'France']

列表+元组=字典

>>> items = [('Name', 'Michael'), ('Gender', 'Male')]
>>> dict(items)
{'Gender': 'Male', 'Name': 'Michael'}

三元表达式

>>> age = 20
>>> 'Adult' if age >= 18 else 'Kids'
'Adult'

.doc,help(),dir()

>>> pow.__doc__
'Equivalent to x**y (with two arguments) or x**y % z (with three arguments)\n\nSome types, such as ints, are able to use a more efficient algorithm when\ninvoked using the three argument form.'
>>> dir(pow)
['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__text_signature__']
>>> help(pow)
Help on built-in function pow in module builtins:

pow(x, y, z=None, /)
Equivalent to x**y (with two arguments) or x**y % z (with three arguments)

Some types, such as ints, are able to use a more efficient algorithm when
invoked using the three argument form.

编写一个能对任意长度列表求和的程序

>>> def summation(*data):
... s = 0
... for var in data:
... s += var
... return s
...
>>> summation(1, 2, 3)
6

迭代器

迭代器无需事先准备好整个迭代过程中的所有元素,仅在迭代到某个元素时才计算元素,而在这之后,元素可以不存在或者被清除。所以迭代器特别适合用于遍历巨大或是无限的集合

>>> it = [i for i in range(10)]
>>> it
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> it_it = iter(it)
>>> it_it.next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'list_iterator' object has no attribute 'next'
>>> next(it_it)
0
>>> next(it_it)
1
>>> next(it_it)
2
>>> next(it_it)
3

装饰器

装饰器可以在函数调用前后,让已有函数在不做任何改动情况下增加特定的功能,这种代码运行期间动态增加功能的方式即装饰器。


上一篇:Python小知识点(3)
下一篇:没有了
网友评论