我有一个列表(original_List),它由多个字符串组成,每个元素都有空格,如下所示。如何创建原始列表中每个元素的最后一个字符串(或仅包含其他所有文件的文件名)的单独列表?
Original_List = ['-rw-rw-r-- 1 root root 134801 Nov 2 14:27 aa_base-13.txt',
'-rw-rw-r-- 1 root root 58630 Nov 2 14:27 aaa_base-extras.txt',
'-rw-rw-r-- 1 root root 300664 Nov 2 14:27 aaa_base-extras.txt']
Expected output for th new list should be as below:
Extracted_list
['aa_base-13.txt', 'aaa_base-extras.txt', 'aaa_base-extras.txt']
答案 0 :(得分:4)
就是这样:
new_list = [x.split()[-1] for x in Original_List]
请在提问时包括您将来的尝试。
正如您所见,没有传递给split
的参数,这意味着它采用默认值即空格。然后,新创建的子列表切片,只取最后一项(这是[-1]
的用途)。尝试删除它以查看它产生的内容。
当然,编程中的大部分时间(如果不是总是)有很多方法可以完成任务。另一个例如是:
new_list = [y for item in [x.split() for x in Original_List] for y in item if '.' in y]
使用第二个,您正在寻找包含点'.'
的子串。您也可以将其替换为'.txt'
。这是查找特定扩展名的文件名或文件名的更可靠方法,因为它们必须包含至少一个点。
这两种方法的共同之处在于它们是列表推导。这是python中的一个核心概念,如果你认真对待,我会建议你看看它。
希望这有帮助!
答案 1 :(得分:2)
您可以尝试列表理解:
[x.split()[-1] for x in Original_List]
希望这有帮助!