Python遍历列表

3

我有一个名为:

word_list_pet_image = [['beagle', '01125.jpg'], ['saint', 'bernard', '08010.jpg']]

这个列表中有更多的数据,但我只保留了一部分。我尝试遍历这个列表,并检查单词是否仅由字母字符组成。如果是,将该单词添加到一个名为新列表的列表中。

pet_labels = []

到目前为止,我已经:

word_list_pet_image = []
for word in low_pet_image:
    word_list_pet_image.append(word.split("_"))

for word in word_list_pet_image:
    if word.isalpha():
        pet_labels.append(word)
        print(pet_labels)

例如,我正在尝试将单词beagle放入pet_labels列表中,但跳过01125.jpg,请参见下文。
pet_labels = ['beagles', 'Saint Bernard']

我遇到了一个属性错误

属性错误:'list'对象没有'isalpha'属性

我确定这与我没有正确地遍历列表有关。

4个回答

3

看起来你正在尝试连接每个子列表中的按字母顺序排列的单词。在这里使用列表推导会更有效。

word_list = [['beagle', '01125.jpg'], ['saint', 'bernard', '08010.jpg']]

pet_labels = [' '.join(w for w in l if w.isalpha()) for l in word_list]

>>> ['beagle', 'saint bernard']

我之前不知道列表推导式,现在会去学习一下。谢谢。 - Nick

1
你有一些列表的列表,所以暴力方法是嵌套循环,例如:
for pair in word_list_pet_image:
    for word in pair:
        if word.isalpha():
            #append to list

另一种选择可能是使用单个for循环,然后对其进行切片:
for word in word_list_pet_image:
    if word[0].isalpha():
        #append to list

1
word_list = [['beagle', '01125.jpg'], ['saint', 'bernard', '08010.jpg']]

为什么不使用列表推导式(仅当非全字母元素始终位于最后时):

pet_labels = [' '.join(l[:-1]) for l in word_list]

0
word_list_pet_image.append(word.split("_"))

.split() 返回列表,因此 word_list_pet_image 本身包含列表,而不是纯单词。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接