2024-08-17



import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
 
public class StreamExample {
    public static void main(String[] args) {
        List<String> items = Arrays.asList("apple", "banana", "orange", "kiwi", "melon", "mango");
 
        // 使用 Stream 对列表进行筛选,只保留长度大于 5 的元素
        List<String> filteredItems = items.stream()
                .filter(item -> item.length() > 5)
                .collect(Collectors.toList());
 
        // 打印筛选后的结果
        filteredItems.forEach(System.out::println);
    }
}

这段代码首先创建了一个包含水果名称的列表,然后使用 stream() 方法来创建一个流。接着,它使用 filter() 方法来对流中的元素进行筛选,筛选条件是元素的长度是否大于 5。最后,使用 collect() 方法将筛选后的流收集到一个新的列表中,并打印出来。这个例子展示了如何使用 Java Stream API 来对数据进行处理,特别是筛选操作。

2024-08-17

在Python中,魔法方法是那些具有特殊名称的方法,Python的内置方法会在特定的情况下自动调用这些方法。魔法方法允许我们定义对象的一些行为,例如定义一个对象在打印时的输出格式,或者定义对象的加减乘除等操作。

以下是一些常见的Python魔法方法及其使用示例:

  1. __init__:构造函数,用于初始化对象。



class MyClass:
    def __init__(self, value):
        self.value = value
 
obj = MyClass(10)
  1. __str__:当我们打印对象时,这个方法定义了输出的格式。



class MyClass:
    def __init__(self, value):
        self.value = value
 
    def __str__(self):
        return f"MyClass with value: {self.value}"
 
obj = MyClass(10)
print(obj)  # 输出: MyClass with value: 10
  1. __repr__:这个方法的功能和__str__类似,但它主要是为调试而设计的。



class MyClass:
    def __init__(self, value):
        self.value = value
 
    def __repr__(self):
        return f"MyClass({self.value})"
 
obj = MyClass(10)
print(repr(obj))  # 输出: MyClass(10)
  1. __add__:定义当两个对象相加时的行为。



class MyClass:
    def __init__(self, value):
        self.value = value
 
    def __add__(self, other):
        return self.value + other.value
 
obj1 = MyClass(10)
obj2 = MyClass(20)
result = obj1 + obj2  # 输出: 30
  1. __iter__:定义对象的迭代行为。



class MyClass:
    def __init__(self, values):
        self.values = values
 
    def __iter__(self):
        for value in self.values:
            yield value
 
obj = MyClass([1, 2, 3])
for item in obj:
    print(item)  # 输出: 1 2 3
  1. __getitem__:定义获取对象元素的行为。



class MyClass:
    def __init__(self, values):
        self.values = values
 
    def __getitem__(self, key):
        return self.values[key]
 
obj = MyClass([1, 2, 3])
print(obj[1])  # 输出: 2

这些是一些常见的Python魔法方法,每个方法都有其特定的用途,合理使用可以极大地提高代码的可读性和易用性。

2024-08-17

要通过Python将各种数据写入Excel工作表,可以使用openpyxlxlsxwriter库。以下是使用openpyxl库将数据写入Excel工作表的例子:




from openpyxl import Workbook
 
# 创建一个新的工作簿
wb = Workbook()
 
# 选择默认的工作表
ws = wb.active
 
# 数据可以是单个值、列表、字典或任何可迭代的数据结构
data = [
    ["姓名", "年龄", "职业"],
    ["Alice", 30, "Engineer"],
    ["Bob", 25, "Designer"],
    ["Charlie", 35, "Developer"]
]
 
# 将数据写入工作表
for row in data:
    ws.append(row)
 
# 保存工作簿
wb.save("example.xlsx")

确保在写入数据前安装了openpyxl库:




pip install openpyxl

这段代码创建了一个新的Excel工作簿,添加了一个工作表,并将一个数据表写入该工作表,然后保存工作簿到当前目录下的example.xlsx文件。

2024-08-17

要自动获取指定上市公司的财务数据,可以使用pandas_datareader库从Yahoo财经获取数据。以下是获取资产负债表、利润表和现金流量表的示例代码:




import pandas as pd
import pandas_datareader.data as web
 
# 指定上市公司代码和数据来源(Yahoo财经)
symbol = '公司代码'  # 例如:'AAPL' for Apple Inc.
start_date = 'YYYY-MM-DD'  # 数据开始日期
end_date = 'YYYY-MM-DD'  # 数据结束日期
 
# 获取资产负债表
balance_sheet = web.DataReader(symbol + '.BALANCE_SHEET', 'yahoo', start_date, end_date)
# 获取利润表
income_statement = web.DataReader(symbol + '.INCOME_STATEMENT', 'yahoo', start_date, end_date)
# 获取现金流量表
cash_flow = web.DataReader(symbol + '.CASH_FLOW', 'yahoo', start_date, end_date)
 
# 打印数据
print(balance_sheet)
print(income_statement)
print(cash_flow)

请替换公司代码YYYY-MM-DD为实际的公司代码和所需的日期范围。注意,某些公司代码可能不在Yahoo财经提供,或者公司代码和财务报表的命名规则可能有所不同,请根据实际情况进行调整。

2024-08-17

Java语言支持所有常见的算术运算符、比较运算符和条件运算符。下面是一些常见的Java运算符:

  1. 算术运算符:+,-,*,/,%,++,--
  2. 赋值运算符:=
  3. 比较运算符:==,!=,>,<,>=,<=
  4. 条件运算符或逻辑运算符:&&,||,!
  5. 位运算符:&,|,^,~,>>,<<,>>> (注意:>>>为无符号右移)
  6. 条件运算符(三元运算符):? :

下面是一些示例代码,展示了这些运算符的使用:




public class OperatorsExample {
    public static void main(String[] args) {
        // 算术运算符示例
        int a = 10;
        int b = 20;
        System.out.println("加法: " + (a + b));
        System.out.println("减法: " + (a - b));
        System.out.println("乘法: " + (a * b));
        System.out.println("除法: " + (a / (double)b)); // 为了避免整除,将b转换为double类型
 
        // 赋值运算符示例
        int c = 0;
        c = a + b;
        System.out.println("赋值: " + c);
 
        // 比较运算符示例
        boolean isEqual = (a == b);
        System.out.println("等于: " + isEqual);
 
        // 逻辑运算符示例
        boolean andResult = (a > 5) && (b < 25);
        System.out.println("逻辑与: " + andResult);
 
        boolean orResult = (a > 5) || (b > 25);
        System.out.println("逻辑或: " + orResult);
 
        // 条件运算符示例
        int max = (a > b) ? a : b;
        System.out.println("条件运算符: " + max);
 
        // 位运算符示例
        int x = 60; // 二进制表示为 110010
        int y = 13; // 二进制表示为 001101
        System.out.println("按位与: " + (x & y)); // 结果为 12, 二进制表示为 000100
        System.out.println("按位或: " + (x | y)); // 结果为 61, 二进制表示为 110111
        System.out.println("按位异或: " + (x ^ y)); // 结果为 49, 二进制表示为 110011
        System.out.println("按位取反: " + (~x)); // 结果为 -61, 二补数表示
        System.out.println("左移: " + (x << 2)); // 结果为 240, 二进制表示为 11110000
        System.out.println("右移: " + (x >> 2)); // 结果为 15, 二进制表示为 00001111
        System.out.println("无符号右移: " + (x >>> 2)); // 结果为 15, 二进制表示为 00001111
    }
}

以上代码展示了Java中各种运算符的基本用法。运算符的使用依赖于特定的场景,需要根据实际需求灵活应用。

2024-08-17

为了提供一个精简的解决方案,我们将使用Python的matplotlib库来绘制一个简单的折线图。以下是一个示例代码:




import matplotlib.pyplot as plt
 
# 数据点
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
 
# 绘制折线图
plt.plot(x, y)
 
# 添加标题和轴标签
plt.title('Simple Plot')
plt.xlabel('x-axis')
plt.ylabel('y-axis')
 
# 显示图形
plt.show()

这段代码将创建一个简单的折线图,显示y = x^2函数的图形。在实际应用中,你可以根据需要修改数据点和绘图的样式。

2024-08-17



import shap
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from matplotlib import pyplot as plt
 
# 生成示例数据
X = np.random.rand(100, 10)
y = np.random.randint(2, size=100)
 
# 划分数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
 
# 初始化模型
model = RandomForestClassifier()
 
# 训练模型
model.fit(X_train, y_train)
 
# 使用SHAP值进行特征重要性评估
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_test)
 
# 计算特征的平均贡献度
feature_contributions = np.abs(shap_values).mean(0)
 
# 可视化特征贡献度
plt.bar(range(len(feature_contributions)), feature_contributions)
plt.xlabel("Feature index")
plt.ylabel("Average SHAP value contribution")
plt.show()

这段代码展示了如何使用SHAP库来评估机器学习模型中每个特征的贡献度,并使用matplotlib进行可视化。首先,我们生成了一些随机的数据,并用train_test_split划分数据集。然后,我们初始化了一个模型并用训练集数据进行训练。接下来,我们使用shap.TreeExplainer来创建一个Explainer对象,并计算测试集上每个样本的SHAP值。最后,我们通过计算SHAP值的平均绝对值来评估每个特征的贡献度,并用matplotlib绘制了贡献度的条形图。

2024-08-17

以下是一个简单的学生信息管理系统的核心函数示例,使用Python和MySQL。请确保你已经安装了mysql-connector-python库,以便与MySQL数据库交互。




import mysql.connector
 
# 连接到MySQL数据库
db_connection = mysql.connector.connect(
    host="localhost",
    user="your_username",
    password="your_password",
    database="students_db"
)
cursor = db_connection.cursor()
 
# 创建学生信息表
def create_student_table():
    cursor.execute("DROP TABLE IF EXISTS student_info")
    cursor.execute("""
    CREATE TABLE student_info (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(255),
        age INT,
        grade VARCHAR(255)
    )
    """)
 
# 插入学生信息
def insert_student(name, age, grade):
    cursor.execute("INSERT INTO student_info (name, age, grade) VALUES (%s, %s, %s)", (name, age, grade))
 
# 查询所有学生信息
def get_all_students():
    cursor.execute("SELECT * FROM student_info")
    return cursor.fetchall()
 
# 更新学生信息
def update_student(id, name, age, grade):
    cursor.execute("UPDATE student_info SET name = %s, age = %s, grade = %s WHERE id = %s", (name, age, grade, id))
 
# 删除学生信息
def delete_student(id):
    cursor.execute("DELETE FROM student_info WHERE id = %s", (id,))
 
# 提交事务
db_connection.commit()
 
# 关闭游标和连接
cursor.close()
db_connection.close()

这个示例提供了创建学生信息表、插入学生信息、获取所有学生信息、更新学生信息和删除学生信息的函数。在实际应用中,你可能还需要添加用户输入验证、错误处理和其他用户界面相关的代码。

2024-08-17

PyInstaller 是一个用于将 Python 程序打包成独立可执行文件的工具,它能够在 Windows、Linux、Mac OS X 等多种操作系统下工作。

安装 PyInstaller:




pip install pyinstaller

打包 Python 程序:




pyinstaller your_script.py

这将会生成dist/your\_script文件夹,里面包含了可执行文件。

如果你想要生成一个单独的可执行文件,可以使用--onefile选项:




pyinstaller --onefile your_script.py

如果你的程序依赖数据文件,你可以使用--add-data选项来包含这些文件:




pyinstaller --add-data 'yourdatafile.dat;.' --onefile your_script.py

如果你想要给生成的可执行文件加上图标,可以使用--icon选项:




pyinstaller --onefile --icon 'youricon.ico' your_script.py

以上是 PyInstaller 的基本使用方法,具体使用时可以根据实际需求选择合适的选项。