跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 求教 Python enumerate 问题
未分類
17 1 月 2021

求教 Python enumerate 问题

求教 Python enumerate 问题

資深大佬 : KnightNic 0

代码如下: https://gist.github.com/KnightNic/e9d2ce3321ab78b0824ebc4316cd7102

可以正常打印,比如只有两个文件时,会以 0: a.csv, 1: b.csv 显示,终端选择 0 或 1 可以正常执行后续代码。

可是想请教一下为什么指定 enumerate(files, 1)之后,当终端输入选择 2 的时候就报错呢? index list out of range,Google 了很多,可是没研究出来

不是程序员工程师,只是为了避免员工手动处理一些需要定期处理的大表格,减少工作量~所以自己研究了下 python 和 pandas

大学时的 C 语言还残存一丢丢记忆。。。

大佬有話說 (9)

  • 資深大佬 : rocksolid

    字符串 str 、列表 list 、元组 tuple 进行按索引取值的时候,默认范围为 0 ~ len(有序序列)-1,计数从 0 开始,而不是从 1 开始,最后一位索引则为总长度减去 1 。
    如果输入的取值结果不在这个范围内,则报这个错。

  • 資深大佬 : Latin

    l = [1,2]
    for n,i in enumerate(l,1):
    print(n,i)
    # 1 1
    # 2 2
    l[2] # 此时 index list out of range
    因为你设置了起始值为 1 而列表的索引没有改下标

  • 主 資深大佬 : KnightNic

    @Latin @rocksolid 感谢二位,其实我之前调试的时候,尝试在修改 df = pd.read_csv(files[int(file)-1]),确实能够接受用户 1 和 2 的输入选择,可是当我输入 0 的时候,貌似默认返回了序号 2 对应的文件。
    另外想请教下如果我想在 input 之后加一个判断,比如输入的数字在索引到的文件序号之内,则进入后续代码,否则就返回一段文字,比如“输入错误”之类的。

    现在想想程序员、工程师确实不简单~早知道大学也深入学一个编程语言了

  • 資深大佬 : XIVN1987

    @Latin

    enumerate 还能设索引起始值,,以前没注意过,,学到一手

  • 資深大佬 : Latin

    @KnightNic 0-1 是-1 而-1 是列表最后一位

  • 資深大佬 : maocat

    enumerate 点开看源码你就会发现第二个可变参数名字叫 start

  • 主 資深大佬 : KnightNic

    @Latin 感谢,目前已经大致解决了,也实现了一些 input 时的判断,不过想请教一下怎么去修改列表的索引起始值,从 1 开始,使只跟 enumerate ( files, 1 )一致呢?
    我目前是用了一个 if 语句,强制剔除了 input 为 0 的情况

  • 資深大佬 : no1xsyzy

    @KnightNic 不能改起始值
    但,如果你不介意的话,有 dict[int, Any] 和 list[None, Any] 两种做法

  • 資深大佬 : Latin

    @KnightNic case 条件 1<input<len(files) 再处理 files 为空的情况不就好了

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具