PythonTip挑战笔记

Python的基础部分看完啦~,发现了PythonTip这个习题小网站。每天都要记一点笔记呀!每天做个几道,开心一整天!🎈

排序函数sort()

sort()会对一个list进行排序:该方法没有返回值,但是会对列表的对象进行排序。**

1
list.sort(cmp=None, key=None, reverse=False)

该方法没有返回值,但是会对列表的对象进行排序。

  • cmp — 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
  • key — 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse — 排序规则,reverse = True 降序, reverse = False 升序(默认)。

链接函数join()

join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。

1
str.join(sequence)

sequence包括元组、列表、字典、字符串, 返回通过指定字符连接序列中元素后生成的新字符串。

比如:

1
2
seq = [a, b, c];    # 字符串序列
print '-'.join(seq) # 结果为 a-b-c

字典的keys() & values()

两个函数分别返回dict的键(key)与值(value):

1
2
dict,keys()
dict.values()

返回字典中所有键或值的列表。

格式化函数format()

Python 2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。

基本语法是通过{ }:来代替以前的 %。举个实例:

1
2
3
4
5
6
7
8
"{} {}".format("hello", "world")    # 不设置指定位置,按默认顺序
# 'hello world'

"{0} {1}".format("hello", "world") # 设置指定位置
# 'hello world'

"{1} {0} {1}".format("hello", "world") # 设置指定位置
# 'world hello world'

这个函数很强大,还有高级的方法,看看这个网址

list元素查找函数index()

index()方法检测字符串中是否包含子字符串str,或者list中是否包含元素a。如果查找工作成功返回开始的索引值,否则抛出异常。

1
2
list.index(a, beg=0, end=len(string))
str.index(str, beg=0, end=len(string))
  • str — 指定检索的字符串
  • beg — 开始索引,默认为0。
  • end — 结束索引,默认为字符串的长度。

练习:用index()函数来将数组中元素末尾的0删除掉,形成新的数组:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def delzero(x):   # 可以去掉数字后面的0的函数。
if x % 10 == 0:
x = int(x / 10)
return delzero(x)
else:
return x

L = [1, 2, 3, 4, 50]
for i in L:
if i % 10 == 0:
a = L.index(i) # <--
L[L.index(i)] = delzero(i)

print(L) # [1, 2, 3, 4, 5]

“<—“ 处不能直接简写为i = delzero(i)但我不知道为什么,我以后不会这么写了。

我会拉,详情见我上一篇的Python笔记啦!有更新。

进制转换

用如下三个函数可以将十进制的数字化成相应的进制。

1
2
3
bin(100)  # 二进制 0b1100100
oct(100) # 八进制 0o144
hex(100) # 十六进制 0x64

当然,传入的参数也可以是其他进制的数字:

1
oct(0b1100100) # 0o144

int() 函数也可以用于进制将其他进制的数字向十进制转换:

1
int(x, base=10)

其中的base参数就是进制数,默认十进制。例如:

1
int('100', base = 2)    # 4

ord() & 字符串与编码转换

ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。

一个转换字符串大小写的例子:

1
2
3
4
5
6
7
8
9
10
def my_lower(a):
lower=ord('a')-ord('A')
b=''
for i in a:
if i > 'A' and i < 'Z':
i = ord(i) + lower
b += chr(i)
else:
b += i
return b