3、Python基础速通(上):变量、数据类型、列表、字典、字符串操作

各位同学,欢迎来到第三章。

说实话,很多做量化的人,一上来就急着写策略、调参数,结果连个字符串都拼接不好,最后跑出来的数据全是乱码。我见过太多这样的案例了。所以,咱们先把地基打牢。

这一章,我带你快速过一遍Python最核心的基础知识。别担心,我不会让你死记硬背。咱们的目标是:够用就行,实战优先

本章核心知识点一览:

  • 变量与数据类型:搞懂Python怎么存数据
  • 列表与字典:量化分析中最常用的两种数据结构
  • 字符串操作:处理新闻文本的基本功
Python基础速通(上) 变量与数据类型 int / float str / bool 列表(List) 索引与切片 增删改查 字典(Dict) 键值对操作 嵌套字典 字符串操作 拼接 / 分割 / 替换 格式化(f-string)

3.1 变量与数据类型:Python的"收纳盒"

变量是什么?说白了,就是给数据贴个标签。你不需要告诉计算机「这个数据要放在内存的哪个位置」,你只需要给它起个名字就行。

我个人习惯用snake_case命名变量,比如news_titlesentiment_score。别用拼音,也别用a、b、c这种毫无意义的命名。你想想看,三个月后回头看自己的代码,看到a = 0.85,你还能记得它代表什么吗?

我的小习惯:变量名要能"自解释"。比如positive_countpc好一万倍。

Python里最常用的数据类型就这几种:

类型 例子 说明
int 100 整数,比如新闻的阅读量
float 3.14159 浮点数,比如情感得分
str "今天股市大涨" 字符串,新闻文本的主力
bool True / False 布尔值,判断条件用
# 实战中的变量声明
news_title = "美联储加息预期升温"
sentiment_score = -0.35
is_positive = False
print(type(sentiment_score))  # 输出:<class 'float'>

注意:Python是动态类型语言,变量类型可以随时改变。但我不建议你这么做。我曾经在项目中看到有人把同一个变量名先当字符串用,后来又当列表用,结果调试了一整天。保持类型一致,是专业素养的体现。

3.2 列表:有序的"购物车"

列表就是一组有序的数据集合。在量化分析里,我们经常用它来存储一系列新闻标题、一组股票代码,或者一段时间内的情感得分。

# 创建一个新闻标题列表
headlines = ["股市收评", "科技板块领涨", "北向资金流入"]
print(headlines[0])   # 输出:股市收评
print(headlines[-1])  # 输出:北向资金流入(负索引从末尾开始)

嗯,这里要注意。列表的索引是从0开始的。很多新手会犯这个错,我刚开始学的时候也踩过这个坑。

列表的常用操作:

# 增
headlines.append("新能源政策利好")  # 末尾添加
headlines.insert(1, "金融板块异动")  # 指定位置插入

# 删
headlines.remove("股市收评")  # 按值删除
popped = headlines.pop()      # 弹出最后一个元素

# 改
headlines[0] = "科技板块领涨A股"

# 查
if "北向资金流入" in headlines:
    print("这条新闻在列表中")

# 切片(取前两条)
top_two = headlines[:2]
print(top_two)

实战场景:我在做新闻情感分析时,经常用列表来存储每一条新闻的情感得分,然后计算平均值,判断整体市场情绪是偏多还是偏空。

3.3 字典:键值对的"通讯录"

如果说列表是按位置查找,那字典就是按名字查找。每个元素都有一个唯一的"键"(key)和对应的"值"(value)。

我个人觉得,字典是Python里最优雅的数据结构之一。它特别适合存储有明确属性的数据,比如一条新闻的完整信息。

# 用字典存储一条新闻
news_item = {
    "title": "美联储加息预期升温",
    "source": "财联社",
    "sentiment": -0.35,
    "publish_time": "2024-01-15 09:30",
    "keywords": ["加息", "美联储", "货币政策"]
}

# 访问字典的值
print(news_item["title"])      # 输出:美联储加息预期升温
print(news_item.get("author", "未知"))  # 安全访问,不存在时返回默认值

字典的增删改查:

# 增
news_item["author"] = "张三"

# 删
del news_item["keywords"]

# 改
news_item["sentiment"] = -0.42

# 查
if "source" in news_item:
    print(f"来源:{news_item['source']}")

# 遍历字典
for key, value in news_item.items():
    print(f"{key}: {value}")

避坑指南:我曾经在项目中直接用news_item["author"]去访问一个不存在的键,结果程序直接崩溃了。后来我养成了习惯,一律用.get()方法,或者先判断键是否存在。这个习惯救了我很多次。

3.4 字符串操作:文本处理的基本功

做新闻量化分析,字符串操作是躲不开的。你要清洗文本、提取关键词、拼接报告……这些全都离不开字符串。

字符串拼接:

# 老式拼接(不推荐)
title = "今日股市"
result = title + ":上证指数上涨0.5%"

# f-string(推荐,Python 3.6+)
index_name = "上证指数"
change = 0.5
result = f"{title}:{index_name}上涨{change}%"
print(result)  # 输出:今日股市:上证指数上涨0.5%

我个人强烈推荐使用f-string。它比+拼接更清晰,比%格式化更直观。你想想看,如果要在字符串里嵌入五六个变量,用+拼起来得多痛苦?

字符串分割与替换:

# 分割
text = "苹果,微软,谷歌,亚马逊"
companies = text.split(",")
print(companies)  # 输出:['苹果', '微软', '谷歌', '亚马逊']

# 替换
raw_text = "今天股市大跌,投资者恐慌"
cleaned = raw_text.replace("大跌", "波动")
print(cleaned)  # 输出:今天股市波动,投资者恐慌

去除空白与大小写转换:

# 去除首尾空格
user_input = "  美联储   "
clean_input = user_input.strip()
print(clean_input)  # 输出:美联储

# 大小写转换(处理英文新闻时常用)
headline = "fed raises interest rates"
print(headline.upper())  # 输出:FED RAISES INTEREST RATES
print(headline.title())  # 输出:Fed Raises Interest Rates

我的经验:在清洗新闻文本时,我通常会先做strip()去除首尾空格,然后用replace()去掉一些特殊符号,最后再用split()分词。这个流程基本能处理90%的文本清洗需求。

3.5 综合实战:构建一条新闻的情感记录

好了,我们把今天学的知识串起来,写一个完整的例子。

# 模拟从API获取的原始新闻数据
raw_data = "  美联储加息预期升温,财联社,2024-01-15,-0.35  "

# 1. 清洗字符串
cleaned_data = raw_data.strip()

# 2. 分割成列表
fields = cleaned_data.split(",")
print(fields)  # 输出:['美联储加息预期升温', '财联社', '2024-01-15', '-0.35']

# 3. 构建字典
news_record = {
    "title": fields[0],
    "source": fields[1],
    "date": fields[2],
    "sentiment": float(fields[3])  # 字符串转浮点数
}

# 4. 判断情感倾向
if news_record["sentiment"] > 0:
    news_record["label"] = "正面"
elif news_record["sentiment"] < 0:
    news_record["label"] = "负面"
else:
    news_record["label"] = "中性"

# 5. 用f-string输出报告
report = f"""
新闻标题:{news_record['title']}
来源:{news_record['source']}
日期:{news_record['date']}
情感得分:{news_record['sentiment']}
情感标签:{news_record['label']}
"""
print(report)

这个例子虽然简单,但它涵盖了变量、列表、字典、字符串操作的所有核心知识点。你在后续的课程中会反复用到这个模式。

总结一下:

  • 变量是数据的标签,命名要清晰
  • 列表适合存储有序的数据序列
  • 字典适合存储有键值对关系的数据
  • 字符串操作是文本处理的基础,f-string是你的好朋友

好了,这一章的内容就到这里。别急着往下走,先把上面的代码自己敲一遍。代码这东西,看十遍不如写一遍。


蓝海数据掘金营,专注资料整理