带有多个参数的“Map”并在没有“for”的情况下迭代

时间:2012-08-13 09:05:40

标签: python itertools map-function

  1. 使用以下代码行(从文件中读取单词对),将它们拆分并返回一个元组,其中每个元组的第一个索引是第一个或第二个单词。 例如,Bob, Smith将分别转换为[(Bob, Smith)][(Smith, Bob)]。我将此映射到g.readlines()中的每对。

    想知道是否可以将第二个参数flip = True传递给更通用的word_flip()函数,该函数可以与map一起使用?

    first_word_is_first = map(first_second_split, g.readlines())
    
    first_word_is_second = map(second_first_split, g.readlines())
    
  2. 一个关于更多功能方法的随机问题,如果给我一个字符串,并且我想根据每个单词的属性(即。Alex Smith AGE 35 420)对该字符串进行分区,那么还有更多函数方法除了遍历string.split()并将该行划分为str变量nameageroom_number或使用正则表达式之外,还会遇到这样的问题?是否可以使用map,filter或itertools?最好是通过字符串一次。

2 个答案:

答案 0 :(得分:1)

  1. 是的,在map()中使用时,您可以使用functools.partial为您的函数添加其他参数。

    from functools import partial
    first_word_is_first = map(partial(word_flip, flip=False), g.readlines())
    first_word_is_second = map(partial(word_flip, flip=True), g.readlines())
    

    虽然使用列表理解会更容易:

    first_word_is_first = [word_flip(l, flip=False) for l in g.readlines()]
    first_word_is_second = [word_flip(l, flip=True) for l in g.readlines()]
    
  2. 你的字符串的结构方式(字段和字段之间的空格)你必须使用像正则表达式或专用函数这样的方法来分割字段。

答案 1 :(得分:0)

for 2:

name, surname, n, age, room = 'Alex Smith AGE 35 420'.split()

从方法调用返回多个结果。