鱼C论坛

 找回密码
 立即注册
查看: 1387|回复: 10

[已解决]映射map的返回如何显示

[复制链接]
发表于 2022-3-20 12:52:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
请教鱼油高手,代码如下:

from PIL import Image

x_1 = x_train[:15]

path_1 = "D:/PyCharm_project/mnist/try1/"

def file_name(x):
    counter = 0
    for x in range(15):
        img = Image.fromarray(x_1[x])
        img = img.resize((224,224)).convert('RGB')
        file_name = img.save(os.path.join(path_1,str(counter)+".jpg"))
        counter += 1
        
for i in map(file_name,range(15)):
    print(i)

但是,print出来的都是None, 这是为什么?后来我用字典解决了这个问题,但是我觉得用map应该也是可以的。
最佳答案
2022-3-20 13:43:15
Geeker_odd 发表于 2022-3-20 13:17
后来我用字典,内容如下:
{0: 'D:/PyCharm_project/mnist/try\\0.jpg', 1: 'D:/PyCharm_project/mnist/tr ...

map 函数是将你的迭代器传进指定的函数,然后得到函数的返回值的。

你的函数没有返回值默认就是 None 了,我改了以下你的代码,看看是不是你要的效果。
from PIL import Image

x_1 = x_train[:15]

path_1 = "D:/PyCharm_project/mnist/try1/"

def file_name(x):
    img = Image.fromarray(x_1[x])
    img = img.resize((224,224)).convert('RGB')
    counter = x + 1
    file_name = os.path.join(path_1,str(counter)+".jpg")
    img.save(file_name)
    return (file_name, counter)
        
for i in map(file_name,range(15)):
    print(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-20 12:55:16 | 显示全部楼层
你希望 i 是什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-20 12:58:35 From FishC Mobile | 显示全部楼层
函数没有返回值当然就都是None
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-20 13:15:38 | 显示全部楼层
我希望把15对映射都打印出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-20 13:17:52 | 显示全部楼层
后来我用字典,内容如下:
{0: 'D:/PyCharm_project/mnist/try\\0.jpg', 1: 'D:/PyCharm_project/mnist/try\\1.jpg', 2: 'D:/PyCharm_project/mnist/try\\2.jpg', 3: 'D:/PyCharm_project/mnist/try\\3.jpg', 4: 'D:/PyCharm_project/mnist/try\\4.jpg', 5: 'D:/PyCharm_project/mnist/try\\5.jpg', 6: 'D:/PyCharm_project/mnist/try\\6.jpg', 7: 'D:/PyCharm_project/mnist/try\\7.jpg', 8: 'D:/PyCharm_project/mnist/try\\8.jpg', 9: 'D:/PyCharm_project/mnist/try\\9.jpg', 10: 'D:/PyCharm_project/mnist/try\\10.jpg', 11: 'D:/PyCharm_project/mnist/try\\11.jpg', 12: 'D:/PyCharm_project/mnist/try\\12.jpg', 13: 'D:/PyCharm_project/mnist/try\\13.jpg', 14: 'D:/PyCharm_project/mnist/try\\14.jpg'}
但是,用map不知道为啥不能显示
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-20 13:43:15 | 显示全部楼层    本楼为最佳答案   
Geeker_odd 发表于 2022-3-20 13:17
后来我用字典,内容如下:
{0: 'D:/PyCharm_project/mnist/try\\0.jpg', 1: 'D:/PyCharm_project/mnist/tr ...

map 函数是将你的迭代器传进指定的函数,然后得到函数的返回值的。

你的函数没有返回值默认就是 None 了,我改了以下你的代码,看看是不是你要的效果。
from PIL import Image

x_1 = x_train[:15]

path_1 = "D:/PyCharm_project/mnist/try1/"

def file_name(x):
    img = Image.fromarray(x_1[x])
    img = img.resize((224,224)).convert('RGB')
    counter = x + 1
    file_name = os.path.join(path_1,str(counter)+".jpg")
    img.save(file_name)
    return (file_name, counter)
        
for i in map(file_name,range(15)):
    print(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-20 15:10:59 | 显示全部楼层
isdkz 发表于 2022-3-20 13:43
map 函数是将你的迭代器传进指定的函数,然后得到函数的返回值的。

你的函数没有返回值默认就是 None  ...

counter = x + 1, 这个不行,因为我要按顺序在文件名字上显示正确的数字,就是0,1,2,3.........14
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-20 15:12:55 | 显示全部楼层
Geeker_odd 发表于 2022-3-20 15:10
counter = x + 1, 这个不行,因为我要按顺序在文件名字上显示正确的数字,就是0,1,2,3.........14


好吧,我看走眼你那个字典了,这样呢:
from PIL import Image

x_1 = x_train[:15]

path_1 = "D:/PyCharm_project/mnist/try1/"

def file_name(x):
    img = Image.fromarray(x_1[x])
    img = img.resize((224,224)).convert('RGB')
    file_name = os.path.join(path_1,str(x)+".jpg")
    img.save(file_name)
    return (x, file_name)
        
for i in map(file_name,range(15)):
    print(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-20 15:14:32 | 显示全部楼层
我给函数增加了返回值,但是还是None:
from PIL import Image
import keras
from keras.datasets import mnist
import os

(x_train,y_train),(x_test,y_test) = mnist.load_data()

x_1 = x_train[:15]

path_1 = "D:/PyCharm_project/mnist/try1/"

def file_name(x):
   
    for x in range(15):
        img = Image.fromarray(x_1[x])
        img = img.resize((224,224)).convert('RGB')
        file_name = img.save(os.path.join(path_1,str(x)+".jpg"))
        
    return file_name
        
for i in map(file_name, range(15)):
    print(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-20 15:36:27 | 显示全部楼层
isdkz 发表于 2022-3-20 12:55
你希望 i 是什么?

我希望得到的一个列表:["0.jpg", "1.jpg", "2.jpg", "3.jpg"......, "14.jpg"]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-20 16:02:45 | 显示全部楼层
折腾半天,发现还是用列表解决,不需要map:

from PIL import Image
import keras
from keras.datasets import mnist
import os

(x_train,y_train),(x_test,y_test) = mnist.load_data()

x_1 = x_train[:15]

path_1 = "D:/PyCharm_project/mnist/try1/"

def file_name(x):
    list = []
    for i in range(x):
        img = Image.fromarray(x_1[i])
        img = img.resize((224,224)).convert('RGB')
        img_name = os.path.join(path_1,str(i)+".jpg")
        img.save(img_name)
        list.append(img_name)
        
    return list
        
file_name(15)

谢谢各位高手指正!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 00:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表