2024-09-29 00:12:31 发布
网友
我需要找到一种方法,将一个多倍数字串拆分为这些数字的多倍字符串,然后再次拆分为单个数字,这将允许我测试这些第一次输入的数字,看看它们是否是harshad数字,而不使用for、else、while和if
到目前为止,我能够拆分输入字符串:
a=输入(“由a分隔的多个数字:”)
a.拆分(“,”)
然后我需要再次拆分,我想我需要使用map函数。你知道怎么进一步吗
python内置的函数映射、过滤器和减少将成为您在更具功能性的风格中工作时的朋友
通过map函数,您可以将iterable(列表、元组等)中的每个项传递给函数,并将返回值用作新的可迭代*中的新值,从而转换iterable中的每个项。 非功能性方法将使用for ... in构造:
map
for ... in
numbers_as_strings = ["1", "12", "13"] numbers_as_ints = [] for number in numbers_as_strings: numbers_as_ints.append(int(number))
或者更简洁地说是一个列表
numbers_as_ints =[int(number) for number in numbers_as_strings]
既然你避开了for,还有另一种方法
for
numbers_as_ints = map(int, numbers_as_strings)
但您不只是希望字符串映射到整数,还需要测试它们的严酷性。既然我们在做函数式的事情,我们就创建一个函数来为我们做这件事
def is_harshad(number_as_string): return # do your harshad test here
然后你可以通过这个函数映射你的数字
list(map(is_harshad, numbers_as_string)) # wrap in list() to resolve the returned map object. >>> [True, True, False]
但也许你想把结果作为一系列苛刻的数字字符串?很好地检出过滤器
filter函数允许您从iterable中选择要保留在新iterable中的项。您给它一个函数,该函数对单个项目进行操作,并为保管者返回True,为拒绝返回False。您还为它提供了一系列要测试的项目
filter
实现这一点的非功能性方法是使用for循环
harshady_numbers = [] for number in numbers_as_strings: if is_harshad(number): harshady_numbers.append(number)
或者更简洁、更贴切地列出一份清单
harshady_numbers = [number for number in numbers_as_strings if is_harshady(number)]
但是,由于我们的功能得到了充分利用filter
harshady_numbers = filter(is_harshady, numbers_as_strings)
就这样。用同样的函数思维来完成is_harshad函数,你就完成了
is_harshad
python内置的函数映射、过滤器和减少将成为您在更具功能性的风格中工作时的朋友
地图
通过
map
函数,您可以将iterable(列表、元组等)中的每个项传递给函数,并将返回值用作新的可迭代*中的新值,从而转换iterable中的每个项。 非功能性方法将使用for ... in
构造:或者更简洁地说是一个列表
既然你避开了
for
,还有另一种方法但您不只是希望字符串映射到整数,还需要测试它们的严酷性。既然我们在做函数式的事情,我们就创建一个函数来为我们做这件事
然后你可以通过这个函数映射你的数字
但也许你想把结果作为一系列苛刻的数字字符串?很好地检出过滤器
过滤器
filter
函数允许您从iterable中选择要保留在新iterable中的项。您给它一个函数,该函数对单个项目进行操作,并为保管者返回True,为拒绝返回False。您还为它提供了一系列要测试的项目实现这一点的非功能性方法是使用for循环
或者更简洁、更贴切地列出一份清单
但是,由于我们的功能得到了充分利用
filter
就这样。用同样的函数思维来完成
is_harshad
函数,你就完成了相关问题 更多 >
编程相关推荐