【问题标题】:What are some Alternatives to enumerate function in Python?在 Python 中枚举函数有哪些替代方法?
【发布时间】:2018-11-02 11:06:14
【问题描述】:

我有一个问题需要使用 python 解决,使用 def 函数。基本上取一个数字列表,然后在列表中每个元素的末尾添加一个字母。

我终于可以做到了,但由于种种原因,我需要找到一种不使用enumerate 的替代方法。有什么方法可以在不使用 enumerate 函数的情况下完成这项工作,更简单一些。这是我的工作代码:

def addletter( mylist ):
    for index, item in enumerate(mylist):
        mylist[index] = str(item)
    for i in range(len(mylist)):
        mylist[i] = mylist[i] + randomletter
    return

# Now you can call addletter function
mylist = [1,2,3,4,5,6,7,8,9,];
randomletter= 'a'
addletter( mylist );
print (mylist)

【问题讨论】:

  • Enumerate 只返回一个索引和值。您可以添加一个初始化为 0 的计数器,并在每个循环结束时添加 1。计数器将是当前索引
  • 我想知道不使用 enumerate 的原因。
  • 这听起来很像一个家庭作业问题,你的老师认为你没有完全按照他们想要的方式解决它。例如,addletter 是要改变(改变)它的输入列表,还是要创建一个新的输出列表?
  • enumerate 这里甚至不需要,你不关心索引,只需遍历列表,将 int 转换为字符串并在字符串中添加 'a'
  • @ruohola 返回一个新列表会更好,无论如何你可以重新分配给同一个列表切片mylist[:] = ['{}a'.format(i) for i in mylist]

标签: python python-3.x


【解决方案1】:

在没有枚举功能的情况下完成:
(可以去掉另外一个循环,不用调用return,python会自动return None):

def add_letter(mylist):
    for i in range(len(mylist)):
        mylist[i] = str(mylist[i]) + randomletter


# Now you can call addletter function
mylist = [1, 2, 3, 4, 5, 6, 7, 8, 9, ];
randomletter = 'a'
add_letter(mylist)
print(mylist)

【讨论】:

  • 这就是我要找的。我有第二个循环,试图弄清楚如何使用范围而不是枚举。
  • @ruohola 这显然是功课。在回答作业问题时,您不应提供完整的解决方案,而应仅提供提示。
  • @brunodesthuilliers 我同意,但由于他非常接近解决方案,所以我没有看到伤害。
猜你喜欢
  • 2011-02-13
  • 2019-03-12
  • 2014-08-08
  • 1970-01-01
  • 2021-03-25
  • 1970-01-01
  • 1970-01-01
  • 2010-09-07
  • 1970-01-01
相关资源
最近更新 更多