【问题标题】:create a series of tuples using a for loop使用 for 循环创建一系列元组
【发布时间】:2013-03-17 21:50:40
【问题描述】:

尽管我确定它已经存在,但我已经搜索并找不到答案。我对python很陌生,但我以前用其他语言做过这种事情,我正在读取一个数据文件的行格式,我想将每一行数据存储在它自己的元组中,以便在for循环之外访问。

tup(i) = inLine

其中inLine 是文件中的行,tup(i) 是它存储的元组。i 随着循环的进行而增加。然后我可以使用类似于

的东西打印任何行
print tup(100)  

【问题讨论】:

  • 尝试在 Google 上搜索“使用 for 循环创建一系列元组”

标签: python for-loop tuples


【解决方案1】:

按照您在循环中的描述创建一个元组并不是一个好选择,因为它们是不可变的。

这意味着每次您向元组添加新行时,您实际上是在创建一个与旧元组具有相同值的新元组,再加上您的新行。这是低效的,一般应该避免。

如果您只需要按索引引用行,您可以使用列表:

lines = []
for line in inFile:
    lines.append(line)

print lines[3]

如果你真的需要一个元组,你可以在完成后转换它:

lines = tuple(lines)

【讨论】:

    【解决方案2】:

    Python File Object 支持一种名为file.readlines([sizehint]) 的方法,该方法读取整个文件内容并将其存储为列表。

    或者,您可以通过元组传递文件迭代器对象以创建行元组并以您想要的方式对其进行索引

    #This will create a tuple of file lines
    with open("yourfile") as fin:
        tup = tuple(fin)
    
    #This is a straight forward way to create a list of file lines
    with open("yourfile") as fin:
        tup = fin.readlines()
    

    【讨论】:

    • 在你的第二个例子中,lis = list(fin) 不是更简单吗?并且更恰当地命名? :^)
    猜你喜欢
    • 1970-01-01
    • 2016-05-08
    • 2013-09-09
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    相关资源
    最近更新 更多