2

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

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

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 ——我很高兴这似乎奏效了。

4

2 回答 2

5

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

切片符号

Python 有一种迭代数组的每个第 n 个元素的方法,称为切片表示法。您可以用以下行替换整个循环

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

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

range()功能_

您还可以使用不同版本的range()函数,它允许您指定开始、结束和步骤,列出这些。

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

range()功能在此处记录。

于 2013-08-09T21:26:17.993 回答
1

您可以使用列表理解

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']

进一步阅读:内置enumerate()函数

于 2013-08-09T21:21:11.197 回答