5

我需要实现一个函数,该函数将一个名称(字符串)列表作为参数,另一个参数将一个字符列表作为参数。该函数应打印出第一个列表中以第二个列表中的字母开头的名称。如果列表为空,则该函数不会打印任何内容。

这是函数调用的样子及其输出

>>> selectSome(["Emma", "Santana", "Cam", "Trevor", "Olivia", "Arthur"], ['A', 'B', 'C', 'D', 'E', 'F'])
Emma
Cam
Arthur
>>> selectSome(["Holly", "Bowel", "champ", 'Fun', 'Apu'], ['a', 'F', 'C'])
champ
Fun
Apu

>>> selectSome([], ['a', 'b', 'c'])

>>> selectSome(['Eva', 'Bob'], [])
>>>
4

2 回答 2

11

这是您需要的要点:

>>> names = ['Alpha', 'Bravo', 'Charlie', 'Delta', 'Echo', 'Foxtrot']
>>> first_letters = ['A','B','C']
>>> output_names = [name for name in names if (name[0] in first_letters)]
>>> output_names
['Alpha', 'Bravo', 'Charlie']

我将把它作为一个函数包装给你。

测试你的理解:

  1. 你如何使这个不区分大小写?
  2. 你明白第 3 行是做什么的吗?(这叫做列表推导。)你能写出等价的for循环吗?
于 2012-04-13T02:07:47.677 回答
10

检查 Python 的“startswith”字符串方法的文档:http: //docs.python.org/library/stdtypes.html#str.startswith

str.startswith(prefix[, start[, end]]) 如果字符串以前缀开头,则返回 True,否则返回 False。prefix 也可以是要查找的前缀元组。使用可选开始,测试从该位置开始的字符串。使用可选结束,停止在该位置比较字符串。

在 2.5 版更改: 接受元组作为前缀。

于 2012-04-13T02:44:15.630 回答