如何打印列表中的部分项目?

2024-05-16 08:58:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表如下:

['Blake 4', 'Bolt 1', 'De Grasse 3', 'Gatlin 2', 'Simbine 5', 'Youssef Meite 6']

我正在打印:

Blake
Bolt
De Grasse
Gatlin
Simbine
Youssef Meite

如何编写处理此场景的列表?我试着使用split和索引,但是我所用的一切都不起作用。你知道吗


Tags: 列表场景desplitblakeboltyoussefgrasse
3条回答

假设所有值都保持该模式,则拆分并重新联接,忽略拆分数组中的最后一个值:

l = ['Blake 4', 'Bolt 1', 'De Grasse 3', 'Gatlin 2', 'Simbine 5', 'Youssef Meite 6']
for x in l:
   print(' '.join(x.split()[:-1]))

否则,请使用regex删除数字:

import re
l = ['Blake 4', 'Bolt 1', 'De Grasse 3', 'Gatlin 2', 'Simbine 5', 'Youssef Meite 6']
for x in l:
    print(re.sub(' \d+', '', x))

试试这个:

l = ['Blake 4', 'Bolt 1', 'De Grasse 3', 'Gatlin 2', 'Simbine 5', 'Youssef Meite 6']
for i in l:
    print(i[:-2])

索引就足以解决您的问题。你知道吗

根据@Jean François的评论,如果你想删除最后一个空格前的所有字符,你可以这样做:

l = ['Blake 4', 'Bolt 1', 'De Grasse 3', 'Gatlin 2', 'Simbine 5', 'Youssef Meite 6']
for i in l:
    print(i[:-i[::-1].index(' ')-1])

列表理解对于打印内容(或任何不需要返回值的操作)是无用的。你知道吗

在您的例子中,可以在循环中使用str.rpartition,只打印字符串中最右边空格的左边:

l =['Blake 4', 'Bolt 1', 'De Grasse 3', 'Gatlin 2', 'Simbine 5', 'Youssef Meite 6']
for s in l:
    print(s.rpartition(" ")[0])

只需从列表中去掉最后一个数字就可以很好地使用listcomp:

newl = [s.rpartition(" ")[0] for s in l]

相关问题 更多 >