这里是python新手,出现错误;列表索引必须是整数或片,而不是str";

这里是python新手,出现错误;列表索引必须是整数或片,而不是str";,python,Python,这里给出的代码的简化版本,但我实际上面临的问题是,我想将这个字符串数组更改为每个字符串的第一个字母。e、 g从“你好”到“h”。 我已经试着在索引周围移动了几次,我知道这与代码(或者更确切地说,我)混合了字符串本身的索引和数组中内容的索引有关。 代码如下: fArray = ["hello", "name", "James"] for i in fArray: fArray[i] = [i][1:0] 错误消息是: TypeE

这里给出的代码的简化版本,但我实际上面临的问题是,我想将这个字符串数组更改为每个字符串的第一个字母。e、 g从“你好”到“h”。 我已经试着在索引周围移动了几次,我知道这与代码(或者更确切地说,我)混合了字符串本身的索引和数组中内容的索引有关。 代码如下:

fArray = ["hello", "name", "James"]
for i in fArray:
    fArray[i] = [i][1:0]
错误消息是: TypeError:列表索引必须是整数或片,而不是str


任何帮助都将不胜感激:)

str
值是不可变的,对列表进行迭代将生成其值,而不是其索引。您可以使用
enumerate
获取索引和值,允许您用不同的字符串替换每个字符串

for i, s in enumerate(fArray):
    fArray[i] = s[0]
上述代码的输出将是

hello
name
James
因为
for
循环中的
i
迭代列表的元素(此结构定义为列表。它不是数组),而不是列表的索引

如果你想迭代索引,你可以这样做

fArray = ["hello", "name", "James"]
for i in range(0, len(fArray)):
    print(i)

# output
0
1
2
len
函数提供列表的长度,此处为
3
范围
功能输出索引
range(0,3)
将吐出
0,1,2
,因为第二个参数不包含在内,并且
循环将在索引上迭代

所以,为了实现你想要做的事情,用这样的方法

fArray = ["hello", "name", "James"]
for i in range(0, len(fArray)):
    fArray[i] = fArray[i][0]
    
执行此代码后,请尝试打印
fArray

print(fArray)

#output
['h', 'n', 'J']

对于fArray中的i:
迭代元素本身,而不是索引
i
“hello”
,然后是
“name”
,然后是
“James”
,而不是
0
1
2
。别忘了使用
枚举
!好的,我只想澄清一下:我需要在数组本身上使用enumerate()函数,然后使用该代码将数组中的每个字符串替换为所述字符串的第一个字母,对吗?@ZahinZaman,当然,谢谢:)在我枚举之后,工作得很有魅力,任何感兴趣的人都可以使用代码:fArray=[“hello”,“name”,“James”]newfArray=enumerate(fArray)中i,s的枚举(fArray):fArray[i]=s[0]
print(fArray)

#output
['h', 'n', 'J']