python 中的map(转载)

Python059

python 中的map(转载),第1张

1 map()函数的简介以及语法:

map是python内置函数,会根据提供的函数对指定的序列做映射。

map()函数的格式是:

map(function,iterable,...)

第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个集合。

把函数依次作用在list中的每一个元素上,得到一个新的list并返回。注意,map不改变原list,而是返回一个新list。

2 map()函数实例:

del square(x):

    return x ** 2

map(square,[1,2,3,4,5])   ---- -要打印结果需要 print(*map(square,[1,2,3,4,5])),这块打印了再打印就会为空

# 结果如下:

[1,4,9,16,25]

通过使用lambda匿名函数的方法使用map()函数:

map(lambda x, y: x+y,[1,3,5,7,9],[2,4,6,8,10])

# 结果如下:

[3,7,11,15,19]

通过lambda函数使返回值是一个元组:

map(lambdax, y : (x**y,x+y),[2,4,6],[3,2,1])

# 结果如下

[(8,5),(16,6),(6,7)]

当不传入function时,map()就等同于zip(),将多个列表相同位置的元素归并到一个元组:

map(None,[2,4,6],[3,2,1])

# 结果如下

[(2,3),(4,2),(6,1)]

通过map还可以实现类型转换

将元组转换为list:

map(int,(1,2,3))

# 结果如下:

[1,2,3]

将字符串转换为list:

map(int,'1234')

# 结果如下:

[1,2,3,4]

提取字典中的key,并将结果放在一个list中:

map(int,{1:2,2:3,3:4})

# 结果如下

[1,2,3]

原文链接:https://blog.csdn.net/quanlingtu1272/article/details/95482253

字典是无序的,兄弟

你看嘛:

>>> testmap={123:['aaa',5],234:['bbb',2],345:['ccc',3],456:['ddd',1]}

>>> print testmap

{456: ['ddd', 1], 345: ['ccc', 3], 234: ['bbb', 2], 123: ['aaa', 5]}

>>> testmap={456:['ddd',1],234:['bbb',2],345:['ccc',3],123:['aaa',5]}

>>> print testmap

{456: ['ddd', 1], 345: ['ccc', 3], 234: ['bbb', 2], 123: ['aaa', 5]}

>>>

你说的按要求排序,应该是有一些自定义规则排序吧,假如要通过值来排序可以用以下方法: 

Java代码  

 public static void main(String[] args) {  

Map<String, Integer> map = new HashMap<String, Integer>()  

  

map.put("lisi", 5)   

map.put("lisi1", 1)   

map.put("lisi2", 3)   

map.put("lisi3", 9)   

  

List<Map.Entry<String, Integer>> infoIds = new ArrayList<Map.Entry<String, Integer>>(  

        map.entrySet())  

System.out.println("--------------排序前--------------")  

for (int i = 0 i < infoIds.size() i++) {  

    String id = infoIds.get(i).toString()  

    System.out.println(id)  

}  

// 排序  

Collections.sort(infoIds, new Comparator<Map.Entry<String, Integer>>() {  

    public int compare(Map.Entry<String, Integer> o1,  

            Map.Entry<String, Integer> o2) {  

        return ( o1.getValue()-o2.getValue())  

    }  

})  

System.out.println("--------------排序后--------------")  

for (int i = 0 i < infoIds.size() i++) {  

    Entry<String,Integer> ent=infoIds.get(i)  

    System.out.println(ent.getKey()+"="+ent.getValue())