【问题标题】:python list.append(values) adding L to values [duplicate]python list.append(values)将L添加到值[重复]
【发布时间】:2016-07-25 18:04:58
【问题描述】:

将值附加到 python 列表时,我遇到了奇怪的行为。我正在使用 openpyxl 读取多个 excel 文件的值,做一些数学运算并将它们写入一个新的 excel 文件。但是,当遍历标题列中的行并将值附加到列表时,列表的最终结果是单元格的值加上“L”。例如,这是我的代码的相关部分:

xl_file = 'path/to/excel/file.xlsx'
wb = openpyxl.load_workbook(xl_file, data_only=True)
sheet = wb.get_sheet_by_name("sheetname")

hdr_col = [] # empty list to store contents of column header
for r in range(3, 13): # we want rows 3-12. rows 1 and 2 of column hdr are empty
    val = sheet.cell(row=r, column = 1).value
    print val # prints the actual value (1, 2, 3,..., 10)
    hdr_col.append(val)
print hdr_col # prints values with L, i.e.:

[1L、2L、3L、4L、5L、6L、7L、8L、9L、10L]

有人可以向我解释发生了什么吗?起初我以为它是 openpyxl 模块,但 L 仅在将值附加到列表后才被添加,所以我现在认为它实际上是 Python。

【问题讨论】:

  • 为什么这很重要?
  • @DanielRoseman 它没有,我只是好奇。我发现它只是意味着值是 Long 类型,通过循环遍历列表并打印出值及其类型。下面的人回答了我关于他们为什么要这样打印的问题。

标签: python list


【解决方案1】:

因为print 返回人类可读的格式 而如果您在声明中使用repr 代替print print val 您实际上发现每个整数都附加了“L”

在这里查看

In [52]: a = 1l

In [53]: print a
1

In [54]: type(a)
Out[54]: long

In [58]: repr(a)
Out[58]: '1L'

In [55]: s = []

In [56]: s.append(a)

In [57]: s
Out[57]: [1L]

因为mysql和其他数据库存储整数值一样长。

【讨论】:

  • 是的,在遍历列表并打印出我看到的值之后,它们实际上并没有以这种方式打印出来,而且它们的类型很长,所以这是有道理的。我想你也回答了为什么会这样,所以谢谢。
  • @user20408 如果您认为此答案有帮助且正确,请标记为收集。
  • 刚刚做了,我没有足够的积分马上接受它。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-11
  • 1970-01-01
  • 2017-08-01
  • 1970-01-01
  • 2021-06-10
  • 1970-01-01
相关资源
最近更新 更多