gpt4 book ai didi

dart - 如何在列表中的所有项目上调用函数?

转载 作者:行者123 更新时间:2023-12-03 03:31:56 24 4
gpt4 key购买 nike

是否有惯用的方法将功能应用于列表中的所有项目?
例如,在Python中,假设我们希望将列表中的所有字符串都大写,则可以使用循环:

regimentNames = ['Night Riflemen', 'Jungle Scouts', 'The Dragoons', 'Midnight Revengence', 'Wily Warriors']
# create a variable for the for loop results
regimentNamesCapitalized_f = []

# for every item in regimentNames
for i in regimentNames:
# capitalize the item and add it to regimentNamesCapitalized_f
regimentNamesCapitalized_f.append(i.upper())
但更简洁的方法是:
capitalizer = lambda x: x.upper()
regimentNamesCapitalized_m = list(map(capitalizer, regimentNames)); regimentNamesCapitalized_m
在Dart列表中的所有项目上调用函数的等效方法是什么?

最佳答案

如果要将函数应用于List(或Iterable)中的所有项目并收集结果,Dart提供了一个等效于Python的Iterable.mapmap函数:

// Dart
regimentNamesCapitalized_m = regimentNames.map((x) => x.toUpperCase()).toList();
Python还提供列表推导,通常被认为是更Pythonic的,并且通常比函数方法更受青睐:
# Python
regimentNamesCapitalized_m = [x.upper() for x in regimentNames]
Dart等效于Python的列表推导为collection-:
// Dart
regimentNamesCapitalized_m = [for (var x in regimentNames) x.toUpperCase()];
如果您是出于副作用而调用函数,而不关心其返回值,则可以使用 Iterable.forEach而不是 Iterable.map。但是,在这种情况下,我个人更喜欢显式循环:
  • 我认为它们更常见,因此更具可读性。
  • 它们更加灵活。您可以使用breakcontinue来控制迭代。
  • 它们可能更有效。 .forEach每次迭代都涉及一个额外的函数调用,以调用提供的回调。
  • 关于dart - 如何在列表中的所有项目上调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63388906/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com