[oeasy]python092_eval_衡量_转化为列表

简介: 本文探讨了 Python 中 `eval` 函数的用法及其与字符串和列表之间的转换关系。通过实例分析,展示了如何使用 `eval` 将字符串转化为对应的数据类型,例如将表示列表的字符串转回列表。同时,文章深入讲解了 `eval` 的工作机制,包括根据本地和全局变量对字符串进行计算的能力。此外,还提醒了命名变量时需避免覆盖内置类名(如 `str`、`int`、`list`)的重要性,以免影响程序正常运行。最后,简要提及字符串和列表索引中负数的应用,并为读者提供了进一步学习的资源链接。

eval_衡量_转化为列表

回忆

  • 上次 深入了  index函数
  • 可以 找到某对象的位置
  • 如果 列表中 有多个指定元素
  • 可以通过 index函数的start和end参数
  • 指定位置列表的下标索引
  • 可以 用中括号 索引到 相应的元素
  • 还可以 替换相应的元素
  • 和 字符串 效果一样

  • 字符串中字符
  • 不能通过 索引下标 直接 修改?
  • 这怎么办??🤔

绕道

s = "oeasy"
char_list = list(s)
char_list
char_list[2] = "A"
char_list
s = ""
for c in char_list:
    s += c
  • 通过list列表

  • 曲则全
  • 枉则直
  • 绕路才能到成功
  • 如果 字符串能转成 列表
  • 那列表 能转化为 字符串 吗?

尝试

  • 把 列表 再转化 为 字符串

  • 最终 得到了
  • 一个字符串
  • 一个 内容 为列表的 字符串
  • 这和我想象的不一样啊
  • 有 什么办法 能够
  • 将 str(list("oeasy")) 这个字符串
  • 转化回 列表 吗?🤔

eval

  • eval
  • 可以把字符串
  • 转化为对应的数据类型
# 这是你的字符串,它表示一个列表
s = str(list("oeasy"))
# 使用 eval() 将字符串转换回列表
# 请确保字符串来源是安全的
my_list = eval(s)
# 打印结果
print(my_list)
  • 这次把 将列表转化为的字符串
  • 转化回了列表
  • 既然是 evalute
  • 可以完成 字符串中的 计算吗?

具体使用

eval("1 + 1")
eval("1 * 1 + 2")

  • 如何理解 eval函数 呢?

eval

help(eval)
  • eval函数的参数是
  • 字符串source

  • eval函数
  • 根据本地和全局的变量
  • 将 source
  • 衡量 (evaluate)出来
  • 被衡量的字符串
  • 可以使用 变量 吗?

根据变量

a = 5
eval("6 * a")
  • 根据变量a的值

  • 可以导入模块吗?

导入模块

import math
eval(str("math.pi"))
eval(str("math.pi * 10 ** 2"))
  • 确实是可以 导入模块的

使用函数

eval("len(\"oeasy\")")
eval("len(\"oeasy\") + 1")
  • 尝试使用len函数

  • 如果len被 赋值了呢?

len被赋值

len = 1
len
eval("len(\"oeasy\")")
  • 果然出错了

  • eval的时候
  • 会执行 参数字符串

  • 不能 把数值 赋给 函数名
  • 那样会 覆盖掉 函数
  • 命名的时候 有什么禁忌吗?

变量命名的禁忌

int = 5
int("5")
  • int 是 类名
  • 一旦 作为 变量名之后
  • 不再是 类名 了
  • 也没法完成 整型变量的 初始化 了

  • 类似的还有str
str = "oeasy"
str("oeasy")
  • str 如果成了变量
  • 就不再是 str类型了

  • list 也会这样吗?

问题

  • 本来 list 是一个 class
  • 如果你把他赋值成了一个空列表
  • list 就变成了一个对象的名字
  • 一个变量 variable
  • 就无法执行 list 类的构造函数了

  • 类名 被覆盖
  • 类 就不能用了

总结

  • 这次了解了eval函数
  • 根据本地和全局的变量
  • 将 source
  • 衡量 (evaluate)出来

  • 要特别注意
  • 类名 str、int、list 不能作为变量名
  • 那样 会 覆盖掉 类

  • 字符串 中 索引值 可以 是 负数
  • 列表中 索引值 可以是 负数吗?🤔
相关文章
|
6月前
|
索引 Python
Python 列表切片赋值教程:掌握 “移花接木” 式列表修改技巧
本文通过生动的“嫁接”比喻,讲解Python列表切片赋值操作。切片可修改原列表内容,实现头部、尾部或中间元素替换,支持不等长赋值,灵活实现列表结构更新。
276 1
|
6月前
|
开发者 Python
Python列表推导式:优雅与效率的完美结合
Python列表推导式:优雅与效率的完美结合
507 116
|
6月前
|
大数据 开发者 Python
Python列表推导式:简洁与高效的艺术
Python列表推导式:简洁与高效的艺术
448 109
|
6月前
|
Python
Python列表推导式:简洁与高效的艺术
Python列表推导式:简洁与高效的艺术
|
6月前
|
Python
Python列表推导式:简洁与高效的艺术
Python列表推导式:简洁与高效的艺术
520 119
|
6月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
395 1
|
6月前
|
索引 Python
098-python列表_切片_slice_开始_结束
本文介绍了Python中列表的切片(slice)操作,通过“前闭后开”原则截取列表片段,支持正负索引、省略端点等用法,并结合生活实例(如切面包、直播切片)帮助理解。切片不改变原列表,返回新列表。
386 4
|
6月前
|
Python
Python列表推导式:优雅与效率的艺术
Python列表推导式:优雅与效率的艺术
378 99
|
6月前
|
数据处理 Python
解锁Python列表推导式:优雅与效率的完美融合
解锁Python列表推导式:优雅与效率的完美融合
397 99
|
6月前
|
开发者 Python
Python列表推导式:一行代码的艺术与力量
Python列表推导式:一行代码的艺术与力量
527 95

推荐镜像

更多