list_util.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. # -*- coding: utf-8 -*-
  2. # 举例:
  3. # a=[1,2,3,4,5,6,7]
  4. # b=split(a,3)
  5. # 则b的值为:
  6. # [[1, 2, 3], [4, 5, 6], [7]]
  7. def split(_list, item_length):
  8. '''
  9. 将制定的list,按制定长度分割。
  10. 举例:
  11. a=[1,2,3,4,5,6,7]
  12. b=split(a,3)
  13. 则b的值为:
  14. [[1, 2, 3], [4, 5, 6], [7]]
  15. :param _list: 要分割的列。_list本身在分割后不会发生变化
  16. :param item_length: 每一项的长度
  17. :return: 分割后的列
  18. '''
  19. return [_list[i:i + item_length] for i in range(0, len(_list), item_length)]
  20. def intersection_by(a, b, fn):
  21. '''
  22. 两个数组在被一个函数应用后,从第一个数组中提取出共有的元素的原元素组成一个新的数组。
  23. :param a: 数组A
  24. :param b: 数组B
  25. :param fn: 处理函数
  26. :return: 数组A与数组B分别被函数fn处理后的数组,相同的部分对应的第一个数组的元素组成的数组
  27. '''
  28. _b = set(map(fn, b))
  29. return [item for item in a if fn(item) in _b]
  30. def initialize_2d_list(w, h, val=None):
  31. """
  32. 初始化二维数组
  33. :param w:二维数组里面的每一个数组的元素个数
  34. :param h:二维数组里面的一维数组的个数
  35. :param val: 二维数组里每一个元素的默认值
  36. :return: 二维数组
  37. """
  38. return [[val for x in range(w)] for y in range(h)]
  39. def change_2d_list_line_row(list_2d):
  40. """
  41. 2维数组行转列
  42. :param list_2d: 2维数组
  43. :return: 行转列后的2维数组
  44. """
  45. return list(map(list, zip(*list_2d)))