如何在Python 2.7中使用'startwith'和'if'语句

时间:2017-05-18 10:37:23

标签: python-2.7 for-loop

我有代码:

name = ['Jan', 'Bob', 'Sarah', 'Billy']
if name.startswith('B'):
     name = 'B is for ' + name

我想改变Bob和Billy的名字来说'B代表Bob','B代表Billy',但我得到错误AttributeError:'list'对象没有属性'startwith'

我不能在for循环中执行它,因为它将名称转换为由新行分隔的简单字符串(我认为)。如果不使用for循环怎么办呢?

3 个答案:

答案 0 :(得分:3)

您必须修改每个列表元素。例如:

names = ['Jan', 'Bob', 'Sarah', 'Billy']

for position, name in enumerate(names):
    if name.startswith('B'):
        names[position] = 'B is for ' + name

print(names)

将输出:

['Jan', 'B is for Bob', 'Sarah', 'B is for Billy']

答案 1 :(得分:1)

您可以使用列表理解:

>>> name = ['Jan', 'Bob', 'Sarah', 'Billy']
>>> name = ["B is for " + n if n.startswith("B") else n for n in name]
>>> name
['Jan', 'B is for Bob', 'Sarah', 'B is for Billy']

这可以缩短为适用于每个名字:

>>> name = ['Jan', 'Bob', 'Sarah', 'Billy']
>>> name = [n[0] + " is for " + n for n in name]
>>> name
['J is for Jan', 'B is for Bob', 'S is for Sarah', 'B is for Billy']

答案 2 :(得分:0)

首先,该功能被称为“startswith”,不确定您的问题或代码中是否只有拼写错误。

这里的问题是你试图在列表元素上调用一个不可能的字符串函数。你必须迭代列表,检查每个索引是否以“B”开头,然后更新该索引的名称列表。