Python之List列表如何处理最好?正确案例详解(python里的list如何用)

网友投稿 349 2022-06-24


本文主要在于一些非常态的列表处理,至于 Python list 自带的一些函数或方法,请见下方 Python 列表常用方法.

相关的方法会持续续加进来,也希望读者有一些方式不知道怎么用的,或者有其他的方法,敬请提示.

 

对列表各元素,逐一处理

>>> import math

>>> a = [math.sqrt(i) for i in range(10)]

[0.0, 1.0, 1.4142135623730951, 1.7320508075688772, 2.0, 2.23606797749979, 2.449489742783178, 2.6457513110645907, 2.8284271247461903, 3.0]

>>> b = [list(range(1,5)), list(range(5,9)), list(range(9,13))]

[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]

建立列表直接处理

>>> # 一维方式

>>> [int(i*10)/10 for i in a]

[0.0, 1.0, 1.4, 1.7, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0]

>>> # 二维方式

>>> [[b[j][i]**2 for i in range(len(b[j]))] for j in range(len(b))]

[[1, 4, 9, 16], [25, 36, 49, 64], [81, 100, 121, 144]]

使用函数,可以重复使用,也适合处理更复杂的状况

>>> def def func(sequence):

... return [int(i*10)/10 for i in sequence]

>>> print(func(a))

[0.0, 1.0, 1.4, 1.7, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0]

使用 map + 函数,可以简化函数的处理,更可适用在单一变量或列表

>>> def func(i):

... return int(i*10)/10

>>> list(map(func, a))

[0.0, 1.0, 1.4, 1.7, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0]

>>> func(1.41459)

1.4

使用 map + lambda 方法,可使 map 对应多参数的函数

>>> list(map(lambda i:int(i*10)/10, a))

[0.0, 1.0, 1.4, 1.7, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0]

使用 map+lambda+function

>>> def Map(func, sequence, *argc):

... return list(map(lambda i:func(i, *argc), sequence))

>>> Map(round, a, 2)

[0.0, 1.0, 1.41, 1.73, 2.0, 2.24, 2.45, 2.65, 2.83, 3.0]

>>> Map(int, a)

[0, 1, 1, 1, 2, 2, 2, 2, 2, 3]

条件选择 / 删除元素

使用 if 条件,建立新列表

>>> # 一维方式

>>> [i for i in a if 2

[2.23606797749979, 2.449489742783178, 2.6457513110645907, 2.8284271247461903]

使用 filter + function

>>> def func(i):

... return 2

>>> list(filter(func, a))

[2.23606797749979, 2.449489742783178, 2.6457513110645907, 2.8284271247461903]

使用 filter + lambda

>>> list(filter(lambda i: 2

[2.23606797749979, 2.449489742783178, 2.6457513110645907, 2.8284271247461903]

使用 filter + lambda + function

>>> def Filter(func, sequence, *argc):

... return list(filter(lambda i:func(i, *argc), sequence))

>>> Filter(float.__gt__, a, 2) # 大于2的

>>> b = ['This', 'There', 'Where', 'Here']

>>> Filter(str.__contains__, b, 'T') # 字串中有'T'的

['This', 'There']

>>> Filter(str.__contains__, b, 'r') # 字串中有'r'的

['There', 'Where', 'Here']

展平列表

def Flat_List(sequence):

result = []

if isinstance(sequence, list):

for item in sequence:

if isinstance(item, list):

result += Flat_List(item)

else:

result.append(item)

return result

else:

return sequence

Flat_List([[1,2,[3,4,5],6,[7,8,[9,10],[11,12]]]])

# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

列表转换

列表与字典

>>> a = [[1,2],[3,4]]

>>> b = dict(a)

>>> b

{1: 2, 3: 4}

>>> list(map(list, b.items()))

[[1, 2], [3, 4]]

列表的排列组合

>>> a = [1,2,3]

>>> [[i, j] for i in a for j in a]

[[1, 1], [1, 2], [1, 3], [2, 1], [2, 2], [2, 3], [3, 1], [3, 2], [3, 3]]

>>> [[i, j] for i in a for j in a if i!=j]

[[1, 2], [1, 3], [2, 1], [2, 3], [3, 1], [3, 2]]

>>> from itertools import permutations, combinations, product

>>> list(map(list, permutations(a

共3页: 上一页123下一页


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:与滑动验证码的斗智斗勇,看如何用Python破解(滑动验证码开源)
下一篇:docx模块报错(docx修改为doc)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~