从文件列表/行中收集每个其他字符串

时间:2013-08-09 21:09:19

标签: python list python-3.x

我已经编写了大约两周的脚本,并且刚学会了从文件中读取文件。

我想要做的是从原始列表中获取所有其他条目并将其存储在新列表中。这是最好的方法吗?

with open("test.txt",mode="r") as myfile:
File = myfile.read().splitlines()

Username = []

for i in range (len(File)):
    if File.index(File[i])%2 == 0 or File.index(File[i]) == 0:
        Username.append(File[i])
print(Username)

请记住,到目前为止我只学习了大约十个小时的Python - 我很高兴这似乎有效。

2 个答案:

答案 0 :(得分:5)

至少有几种方法可以用更少的代码完成同样的事情。

切片表示法

Python有一种迭代数组slice notation的每个第n个元素的方法。您可以使用以下行替换整个循环

Username.extend(File[0::2])

这基本上意味着从索引2开始抓取每个0 nd元素并将其添加到Username数组。

range()函数

您还可以使用range()功能的不同版本,它允许您指定开始,结束和步骤,以便列出。

for i in range(0, len(File), 2):
    Username.append(File[i])

range()函数已记录在案here

答案 1 :(得分:1)

您可以使用list comprehension

<强> input_file

Line 1
Line 2
Line 3
Line 4
Line 5
Line 6
Line 7
Line 8
Line 9
Line 10

<强>的Python:

>>> with open("input_file") as f:
...     alternates = [line for i, line in enumerate(f) if not i % 2]
... 
>>> alternates
['Line 1\n', 'Line 3\n', 'Line 5\n', 'Line 7\n', 'Line 9\n']

进一步阅读:the enumerate() built-in function