Python/JS/Go/Java同步学习(第二十二篇)四语言“列表删改查|浅深拷贝“对照表: 雷影“老板“发飙要求员工下班留校培训(附源码/截图/参数表/避坑指南)

🤝 免骂声明:

  • 本文列表删改查|浅深拷贝基础操作经本蜀黎实战整理,旨在提供快速参考指南📝
  • 因各语言版本迭代及不同系统环境差异,偶尔可能出现整理不全面之处,实属正常✅
  • 欢迎理性交流补充,喷子勿喷——毕竟你行你上来写,我敬你是条汉子,告诉我的你原文链接,我给你一键三连+转发👍!
  • 若遇具体问题,请带图评论区留言,本蜀黎必拔码相助🤝
    土味海报

⚠️【开篇警示·数据生死箴言】

  • 删改一瞬,数据永恒——
    指尖轻落间,或掌生杀大权,或酿湮灭之祸!」💥

  • 😱本篇虽基础,然删除操作直系数据生死——

  • 🔁深浅拷贝阴阳双盾备份备份再备份!方免千古之憾!

  • 「某厂程序员误删用户表,连夜跑路」😱

  • 「某小哥rm -rf,哭着给硬盘办葬礼」😭

🐯【虎山CTO开篇暴论】

  • 「数据世界无后悔药——😵
    删前无拷贝,如炼丹无备炉炸鼎只在一瞬间!」

🐯【虎山CTO的数据生死暴论】

  • 「编程如持手术刀——💎
    高手救人于数据水火,半吊子送人往系统黄泉!

  • 技术双刃剑,一念天堂一念地狱——📌
    指尖敲的是代码,脚下踩的是阴阳线!

  • 删库跑路非笑话,一念之差千古恨——🙏
    这活计,没点敬畏之心真干不了!」

⚡【编程代码数据生死箴言】

  • 代码世界没有『差不多』——😱
    差之毫厘,谬以千里;
    手抖一下数据升天!

  • 备份是程序员最后的慈悲——📦
    宁可备而不用,不可用而不备!」

🌿【虎山CTO·药材使用警示】

  • 🍀是药三分毒,代码亦如方!
  • ❌文中所涉药材均为技术隐喻,严禁实际配伍使用。
  • 🙏真实用药请遵医嘱,乱用者——
  • 系统崩坏事小,气血逆流事大!⚠️

📚 系列文章预告:

  • 近期内容将聚焦编程基础构建,以「原创知识矩阵」形式系统梳理核心概念。每篇如连续剧集般环环相扣,建议按顺序学习——知识点一锅端,疗效更持久!🔥

🧠【场景还原:学校的列表删改特训】

⚡ 雷影老板(怒拍数据大屏):

  • 「🏆本周数据巡检,删除冗余、修改错误、查询精准必须达标!做不到的,今晚通宵手写《火影数据净化心经》500遍!」

🦊 鸣人(抓狂挠头):

  • 「伊鲁卡老师!popremovedel到底啥区别?为什么Python删元素会变药渣,Java删不好直接报错啊?!😫」

👨‍🏫 伊鲁卡(粉笔头精准命中后脑):

  • 鸣人!列表删改如药方调剂——🌿

  • pop → 按位抓药丢弃(可留药渣)

  • remove → 按名剔出劣药(精准销毁)

  • del→ 直接捣碎药柜(物理删除)

🐯 卡卡西(举《亲热天堂》幽幽补刀):

  • 「🎨啧...连删改查都搞不定,以后怎么跟我学影分身·垃圾回收之术?」

🧘【扎马步·列表删改查心法】

  • 🗑️删如去芜,方法不同药性迥异——

    • pop → 按位弃药(可回收药渣)🥇
    • remove → 按名除劣(精准销毁)🥈
    • del → 捣碎药柜(彻底清除)🥉
  • 🔎查如辨药,索引错位则药性全失——

    • 索引从0起,负索引从-1起🏆
    • 越界如抓错药,系统必反噬!😱
  • 🔄改如调方,君臣佐使不可乱——

    • 直接赋值如换药,索引需精准✅
    • 切片赋值如调方,区间需明确🌈
操作类型 Python JavaScript Go Java
按位删除 list.pop(i) arr.splice(i, 1) slice = append(slice[:i], slice[i+1:]...) list.remove(i)
按值删除 list.remove(x) arr.splice(index, 1) 遍历查找后拼接切片 list.remove(Object)
清空列表 list.clear() arr = [] slice = nil list.clear()
删除变量 del list arr = null Go 自动垃圾回收(GC) list = null
安全拷贝 list.copy() [...arr] copy(dst, src) new ArrayList<>(list)

核心差异解析:

  • Python:pop可返回被删元素,remove按值删,del可删变量

  • JavaScript:splice万能删,pop/shift专删首尾,无内置按值删

  • Go:需手动切片重组,无内置按值删,类型严格

  • Java:remove按位或按值,类型严格,需注意索引边界

⚠️【避坑指南·删改查界的“药性相冲”】

🐍 Python:pop vs remove 药性不同

hd = ["山楂", "麦芽", "神曲"]
val = hd.pop(1)    # ✅ 删除索引1("麦芽"),val="麦芽"
hd.remove("神曲")  # ✅ 按值删除"神曲"
# hd.remove("不存在") # 💥 报错:ValueError

☕ Java:类型严格+索引陷阱

List<String> hd = new ArrayList<>(Arrays.asList("山楂","麦芽","神曲"));
hd.remove(1);          // ✅ 删除索引1("麦芽")
hd.remove("神曲");     // ✅ 按值删除"神曲"
// hd.remove(100);     // 💥 索引越界:IndexOutOfBoundsException

⚡ Go:切片重组需重新赋值

hd := []string{"山楂","麦芽","神曲"}
hd = append(hd[:1], hd[2:]...)   // ✅ 删除索引1("麦芽"),必须重新赋值
// 按值删除需遍历:
for i, v := range hd {
    if v == "麦芽" {
        hd = append(hd[:i], hd[i+1:]...)
        break
    }
}

💣 JavaScript:splice的删除陷阱

let hd = ["山楂","麦芽","神曲"];
hd.splice(1, 1);     // ✅ 删除索引1开始的一个元素("麦芽")
hd.splice(1, 0, "谷芽"); // 😱 这是插入不是删除!第二个参数0表示不删除

🧪【实战场景:药方净化模拟】

场景:药方中误混入“蜘蛛香”(三仙外药材),需删除

Python(正确做法):

药方 = ["山楂", "麦芽", "神曲", "蜘蛛香"]
药方.remove("蜘蛛香")  # ✅ 按值删除
# 或
药方.pop(-1)          # ✅ 按位删除最后一位

其他语言对比:

// JavaScript
let 药方 = ["山楂", "麦芽", "神曲", "蜘蛛香"];
药方.splice(药方.indexOf("蜘蛛香"), 1);  // ✅ 按值删除
// Java
List<String> 药方 = new ArrayList<>(Arrays.asList("山楂", "麦芽", "神曲", "蜘蛛香"));
药方.remove("蜘蛛香");  // ✅ 按值删除
// Go
药方 := []string{"山楂", "麦芽", "神曲", "蜘蛛香"}
for i, v := range 药方 {
    if v == "蜘蛛香" {
        药方 = append(药方[:i], 药方[i+1:]...)
        break
    }
}

🐯【虎山CTO的删改查终极暴论】

  • 删如去芜:pop如取药渣,remove如剔劣药,del如砸药柜🏆

  • 改如调方:直接赋值如换君药,切片赋值如调佐使🥇

  • 查如辨药:索引错则药性逆,越界则系统崩🥈

  • 安全第一:操作前备份如抄方,防止误删如防毒✅

🧘【扎马步·拷贝心法:浅拷贝如抄方,深拷贝如炼丹】

🌈额外新增,后续章节还有专题讲解——

📜 拷贝如传方,方法不同药效迥异——

  • 浅拷贝 → 抄写药方(君臣共用,一改俱改)📄

  • 深拷贝 → 重炼丹药(君臣独立,互不干扰)⚗️

特性 浅拷贝 深拷贝
复制方式 只复制药方目录(引用共享) 完整重炼丹药(完全独立)
内存占用 ✅ 省内存(不复制内容) ❌ 耗内存(完全复制)
修改影响 ❌ 原方修改影响抄本 ✅ 原方修改不影响抄本
性能 ⚡ 高速(仅复制引用) 🐢 低速(完全复制)
适用场景 只读查看、临时参考 需要独立修改重要药方

🧪【实战场景:药方拷贝模拟】

场景:雷影要求备份药方,但防止学徒误改原方🔁

Python(深浅拷贝对比):

import copy

# 原始药方(含君臣佐使嵌套列表)
原药方 = ["君药", ["臣药", "佐药"], "使药"]

# 浅拷贝(如抄方)
抄本方 = 原药方.copy()          # 或 copy.copy(原药方)
# 深拷贝(如炼丹)
炼丹本 = copy.deepcopy(原药方)

# 修改原药方的臣药
原药方[1][0] = "劣质臣药"

print("原药方:", 原药方)
print("抄本方:", 抄本方)    # ❌ 臣药也被污染!
print("炼丹本:", 炼丹本)    # ✅ 臣药保持纯净

其他语言对比:

// JavaScript
const 原药方 = ["君药", ["臣药", "佐药"], "使药"];

// 浅拷贝(扩展运算符)
const 抄本方 = [...原药方];
// 深拷贝(JSON法,但有局限)
const 炼丹本 = JSON.parse(JSON.stringify(原药方));

原药方[1][0] = "劣质臣药";
console.log("抄本方:", 抄本方);  // ❌ 臣药被污染
console.log("炼丹本:", 炼丹本);  // ✅ 臣药纯净
// Java
import java.util.*;
import org.apache.commons.lang3.SerializationUtils;

List<Object> 原药方 = Arrays.asList("君药", Arrays.asList("臣药", "佐药"), "使药");

// 浅拷贝(构造函数)
List<Object> 抄本方 = new ArrayList<>(原药方);
// 深拷贝(序列化法)
List<Object> 炼丹本 = SerializationUtils.clone(SerializationUtils.serialize(原药方));

// 修改原药方
((List<String>)原药方.get(1)).set(0, "劣质臣药");

System.out.println("抄本方:" + 抄本方);  // ❌ 臣药被污染
System.out.println("炼丹本:" + 炼丹本);  // ✅ 臣药纯净
// Go
import "github.com/jinzhu/copier"

原药方 := []interface{}{"君药", []string{"臣药", "佐药"}, "使药"}

// 浅拷贝(直接赋值)
抄本方 := make([]interface{}, len(原药方))
copy(抄本方, 原药方)
// 深拷贝(使用copier库)
var 炼丹本 []interface{}
copier.Copy(&炼丹本, &原药方)

// 修改原药方
原药方[1].([]string)[0] = "劣质臣药"

fmt.Println("抄本方:", 抄本方)  // ❌ 臣药被污染
fmt.Println("炼丹本:", 炼丹本)  // ✅ 臣药纯净

⚠️【避坑指南·拷贝界的“药性相冲”】

🐍 Python:浅拷贝的嵌套陷阱

原药方 = ["君药", ["臣药", "佐药"]]
抄本方 = 原药方.copy()

原药方[0] = "新君药"          # ✅ 不影响抄本方(第一层独立)
原药方[1][0] = "劣质臣药"     # ❌ 影响抄本方!(嵌套层共享)

print(抄本方)  # ['君药', ['劣质臣药', '佐药']] 💥

☕ Java:ArrayList构造函数是浅拷贝

List<List<String>> 原药方 = new ArrayList<>();
原药方.add(Arrays.asList("君药", "臣药"));

List<List<String>> 抄本方 = new ArrayList<>(原药方);  // 浅拷贝!

原药方.get(0).set(0, "劣质君药");
System.out.println(抄本方.get(0).get(0));  // "劣质君药" 💥

⚡ Go:slice的浅拷贝本质

原药方 := []string{"君药", "臣药"}
抄本方 := make([]string, len(原药方))
copy(抄本方, 原药方)  // ✅ 第一层深拷贝

// 但对于嵌套slice仍需深度复制

🐯【虎山CTO的拷贝终极暴论】

  • 浅拷贝如抄方:快捷但危险,君臣共用一气血,一损俱损💥

  • 深拷贝如炼丹:耗时但安全,君臣独立各成体系,互不干扰🥓

  • 日常调剂用浅拷:只读查看、临时计算,省内存提性能🌈

  • 重要药方用深拷:需要独立修改、长期存储,保安全避污染✅

❌ 万级嵌套数据切忌浅拷贝:

  • 如用君臣共用药杵,一味药变质,全方皆毒😱

✅ 重要数据必用深拷贝:

  • 如各自炼丹炉,君臣佐使互不干扰,安全可靠✅

🧪【记忆口诀】

浅拷贝:

  • 抄方 快又省,嵌套 会传染 ❌

深拷贝:

  • 炼丹 慢却稳,独立 保安全 ✅

跨语言通用:

  • 只读查看用浅拷,修改独立用深拷📌

⚠️【删除操作·拷贝警示箴言】

🗑️ 删除篇:

  • 「删药如剔毒,位错则方崩——索引越界如抓错药,系统反噬顷刻间!」🚀
  • pop取渣,remove剔劣,del毁柜——手法不同,药性天壤!」🌈

📜 拷贝篇:

  • 浅拷贝如共用药杵,一药变质全方毒!」🖤
  • 深拷贝如各立丹炉,君臣佐使互不扰!」✅

⚖️ 综合警示:

  • 删前不备份,如炼丹无备炉——数据湮灭悔晚矣!」😵
  • 「浅深不分抄方,似君臣共用气血——一改俱改,祸及全方!」😱

🐯 虎山CTO终极警示:

  • 删除操作如虎口拔牙,拷贝选择似君臣配伍——🌈
  • 位错则系统崩,浅深乱则数据腐🖤

🎯 记忆口诀:

  • 删前必拷贝,深浅要分明🏆
  • 索引从0起,越界如崩方🥇
  • 嵌套用深拷,平级可浅抄🥈
  • 数据如人命,操作需谨慎🥉

以下是本蜀黎整理源码和截图⏬

1.Python源码

# ==================== 财务列表模块 ====================
# 账本.copy()  # 克隆一份阴阳账本 👻
# 异常科目.pop(3)  # 把问题科目踢出报表 🦶
# 冗余科目.remove("预提")  # 精准切除财务肿瘤 🏥
# ⚠️ERP_冷溪虎山:操作不当会引发审计风暴

hd = ['山楂','神曲','麦芽','谷芽','鸡矢藤','鸡内金','蜘蛛香','沙棘'] #消化药 列表
hdj = ["焦山楂","焦神曲","焦麦芽"] #消化药 焦三仙

three = ["山楂","神曲","麦芽"] #消化药 普通三仙
three_copy = three.copy()  #复制普通三仙列表

hd.pop()  #默认删除最后一个元素 沙棘
hd.pop(1) #删除第二个元素
hd.pop(-1) #还是删除倒数第一元素 第二次删除 蜘蛛香
print(hd)

print("\n🍒🍒🍒🍒🍒🍒🍒🍒以下移除的对象")
hdj.remove("焦山楂")  #删除焦山楂
del hdj[1]   #删除剩余第二个元素 焦麦芽
print(hdj)   #输出焦神曲

print("\n🍒🍒🍒🍒🍒🍒🍒🍒以下删除的对象")
print(three_copy) #打印复制对象
del three_copy #全部删除
# print(three_copy) #报错没有对象可打印

Python

2.Nodejs源码

// ==================== 中药列表模块 ====================
// 复制秘方副本  // 防止丹方被偷师 🕵️♂️
// 弹出过期药材  // 把霉变药材踢出丹炉 🚮
// 去除相克药材  // 精准剔除配伍毒素 ☠️
// ⚠️虎山老药师:手抖会炼出黑暗料理

// 消化药列表
let hd = ['山楂', '神曲', '麦芽', '谷芽', '鸡矢藤', '鸡内金', '蜘蛛香', '沙棘'];
// 消化药 焦三仙
let hdj = ["焦山楂", "焦神曲", "焦麦芽"];
// 消化药 普通三仙
let three = ["山楂", "神曲", "麦芽"];
// 复制普通三仙列表
let three_copy = [...three]; // 使用扩展运算符复制数组

// 删除元素
hd.pop(); // 默认删除最后一个元素 沙棘
hd.splice(1, 1); // 删除第二个元素 神曲
hd.pop(); // 删除倒数第一个元素 蜘蛛香
console.log(hd);

console.log("\n🍒🍒🍒🍒🍒🍒🍒🍒 以下移除的对象");
hdj.splice(hdj.indexOf("焦山楂"), 1); // 删除焦山楂
hdj.splice(1, 1); // 删除剩余第二个元素 焦麦芽
console.log(hdj); // 输出焦神曲

console.log("\n🍒🍒🍒🍒🍒🍒🍒🍒 以下删除的对象");
console.log(three_copy); // 打印复制对象
three_copy = []; // 清空数组
console.log(three_copy); // 如果取消注释会输出空数组,不会报错

nodejs

3.Go源码

package main

import "fmt"

// ==================== 仓储列表模块 ====================
// 创建库存快照  // 给货物拍CT存档 📸
// 弹出临期货品  // 把过期商品踢下架 👢
// 移除破损商品  // 精准清理仓库肿瘤 🩹
// ⚠️冷溪物流:暴力操作会触发库存大出血

func main() {
	// 消化药列表
	hd := []string{"山楂", "神曲", "麦芽", "谷芽", "鸡矢藤", "鸡内金", "蜘蛛香", "沙棘"}
	// 消化药 焦三仙
	hdj := []string{"焦山楂", "焦神曲", "焦麦芽"}
	// 消化药 普通三仙
	three := []string{"山楂", "神曲", "麦芽"}
	// 复制普通三仙列表
	three_copy := make([]string, len(three))
	copy(three_copy, three)

	// 删除元素
	hd = hd[:len(hd)-1]            // 默认删除最后一个元素 沙棘
	hd = append(hd[:1], hd[2:]...) // 删除第二个元素 神曲
	hd = hd[:len(hd)-1]            // 删除倒数第一个元素 蜘蛛香
	fmt.Println(hd)

	fmt.Println("\n🍒🍒🍒🍒🍒🍒🍒🍒以下移除的对象")
	// 删除焦山楂
	for i, v := range hdj {
		if v == "焦山楂" {
			hdj = append(hdj[:i], hdj[i+1:]...)
			break
		}
	}
	// 删除剩余第二个元素 焦麦芽
	hdj = append(hdj[:1], hdj[2:]...)
	fmt.Println(hdj) // 输出焦神曲

	fmt.Println("\n🍒🍒🍒🍒🍒🍒🍒🍒以下删除的对象")
	fmt.Println(three_copy) // 打印复制对象
	three_copy = []string{} // 清空数组
	fmt.Println(three_copy) // 如果取消注释会输出空数组,不会报错
}

golang

4.Java源码

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

// ==================== ERP列表模块 ====================
// 创建流程副本  // 给审批流买保险 📑
// 弹出异常节点  // 把死循环踢出系统 🦵
// 移除冗余字段  // 给数据库做微创手术 🏩
// ⚠️ERP老兵_冷溪虎山:误删会导致系统高位截瘫

class main22 {
    public static void main(String[] args) {
        // 消化药列表
        List<String> hd = new ArrayList<>(Arrays.asList("山楂", "神曲", "麦芽", "谷芽", "鸡矢藤", "鸡内金", "蜘蛛香", "沙棘"));
        // 消化药 焦三仙
        List<String> hdj = new ArrayList<>(Arrays.asList("焦山楂", "焦神曲", "焦麦芽"));
        // 消化药 普通三仙
        List<String> three = new ArrayList<>(Arrays.asList("山楂", "神曲", "麦芽"));
        // 复制普通三仙列表
        List<String> three_copy = new ArrayList<>(three);

        // 删除元素
        hd.remove(hd.size() - 1); // 默认删除最后一个元素 沙棘
        hd.remove(1); // 删除第二个元素 神曲
        hd.remove(hd.size() - 1); // 删除倒数第一个元素 蜘蛛香
        System.out.println(hd);

        System.out.println("\n🍒🍒🍒🍒🍒🍒🍒🍒以下移除的对象");
        hdj.remove("焦山楂"); // 删除焦山楂
        hdj.remove(1); // 删除剩余第二个元素 焦麦芽
        System.out.println(hdj); // 输出焦神曲

        System.out.println("\n🍒🍒🍒🍒🍒🍒🍒🍒以下删除的对象");
        System.out.println(three_copy); // 打印复制对象
        three_copy.clear(); // 清空数组
        System.out.println(three_copy); // 如果取消注释会输出空数组,不会报错
    }
}

Java

源码分享结束⏫

📜【结局:全员通关】

⚡ 雷影老板(盯着净化后的数据目瞪口呆):

  • 「🏆这...这操作比我的雷遁·数据库净化之术还流畅!全员年终奖翻倍——但必须学会四语言删改查,否则奖金扣去修雷影大楼的数据库!」

🌸 雏田(小声对鸣人说):

  • 「鸣人...下次用remove前记得先copy...就像调剂前先抄方...📜」

🦊 鸣人(举着拉面碗蹦起来):

  • 「哈哈哈!原来删改查就是倒汤、换叉烧、看配方!我会了!佐助——来比谁先清理完一乐菜单!🍜」

🐯 卡卡西(默默合上《亲热天堂》):

  • 「嗯...总算有点样子了。下次教你们用切片术破解幻术·树结构数据...📙」

💥 佐助(写轮眼微闪):

  • 「🎨哼...吊车尾的,等你能用Go手动实现remove再说吧。」

🧪【附:四语言删改查心法口诀】

Python:

  • pop 按位删,remove 按值删,del 彻底删,索引从0起🏆

JavaScript:

  • splice 万能删,pop/shift 删首尾,无内置按值删🥇

Go:

  • 切片重组手动删,类型严格需遍历,无内置按值删🥈

Java:

  • remove 按位按值删,类型严格忌越界,清空用clear🥉

⚠️ 免责声明(附因果律警告)

本代码已注入中医玄学能量,请谨慎使用:

  • ✅ 允许白嫖,但白嫖不点赞可能导致:
    • 下次面试官恰好问到这个算法
    • 键盘自动打出//这里感谢冷溪虎山CTO
    • 奶茶精准洒在刚写好的代码上
  • ✅ 允许商用转发,但商用不注明出处可能触发:
    • 系统类型混乱自动转型
    • 数据库莫名存储"君臣佐使"字段
  • ✅ 允许吐槽,但吐槽不带改进建议可能引发:
    • 终生与老板N连鞭相爱相杀

🚀 现在立即行动:

  1. 点赞 → 吸收本篇算法精华+怪蜀黎脑洞思维
  2. 收藏 → 避免日后求医无门
  3. 关注 → 接收更多「中医+代码」脑洞
  4. 评论区留言 → 领取你的专属「算法药方」

⚠️ 友情提示:

  • 本文内容过于硬核,建议点赞收藏转发三连,避免小编心情波动导致文章神秘消失
  • 毕竟小编今天可能爱答不理,明天可能高攀不起——
  • 但你的收藏夹,永远是你最稳的知识备份!

🐶💻 (小声说:关我小黑屋?不存在的,备份早已同步GitHub/公众号/网盘!)

📚 往期爆文推荐,VIP轮换解锁:

📖Python/JS/Go/Java四语言同步学习,跨语言系列上线(别在纠结学什么单语言了)

🔍 没看过前传?快补课!
1-18篇请移步至"PY-JS-GO-JAVA基础进阶学习系列"合集中阅读

🌌平台算法容忍度测试系列上线,共三篇

✨跟大家创作方向获取流量息息相关,尽快留存以防下架

🚀编程算法难懂?

✅编程算法中医药版上线,后续会更新:

Python工具箱系列上线,复制粘贴就能用✅✅:

✨碰到 其他卡顿问题| 其他数据抓取"正则"匹配问题? #### JetBrains 全家桶性能优化 ,点击以下链接👇👇直达其他爆款指南:

PS:按顺序看效果更佳!从 Java 到 Python,从 Web 到 C/C++,再到数据库——一套逻辑通吃 JetBrains 全家桶!

  • 转发给团队里还在用默认配置的同事,救救他们的电脑和头发!"

  • “💡 不用东找西找——你要的「性能调优×数据抓取」爆款攻略,这里全都有!点击↑↑↑快速查漏补缺!”

----------------------------------------------------

💡✨本文采用【开源共享】协议!欢迎转载、洗稿、甚至做成视频!只需保留原作者署名(ERP老兵-冷溪虎山),让我们一起把跨界技术的快乐传递出去!。

让我们一起把快乐和效率带给更多人!,缺爆款素材的兄弟姐妹可以关注私我,保证你用不完的爆款素材🚀🚀

素材代码单链表

posted @ 2025-09-22 16:03  ERP老兵-冷溪虎山  阅读(7)  评论(0)    收藏  举报