python 定义变量list int
PHPz
PHPz 2017-04-17 14:51:43
[Python讨论组]

如题。
如果定义一个list,当字符串用
name=[h,e,l,l,o];
string=[];
for k in range(0,len(name)):
string[k]=name[k];

结果报错。
这样定义string为一个空list,再往string里赋值,不能进行。
string应该怎样定义可以执行for循环?

同样问题,
定义一个integer类型array,
inta=range(0,100);
有更动态的定义方法吗?
比如定义一个含100个元素的inta,每个元素初始赋值0,这个怎样定义?
我想定义一个10*10的matrix,给定matrix的size,
应该怎样定义?

PHPz
PHPz

学习是最好的投资!

全部回复(4)
PHP中文网

不能用下标赋值的原因是:Python里的字符串是immutable,即不可改变的, string[2] = 'l' 这种赋值语义是无论如何也不可能的。它不能像在C/C++里的字符串这样用,倒有点像Java的字符串。你每一次连接字符串,都进行了重复的拷贝,非常不好。要把这个列表转换成字符串Pythonic的方法是:

string = name.join("")
# or append single-character string
# but low performamnce
for c in name: string += c

后面,生成10个0的列表可以这样定义:[0] * 10; 如此类推,10*10的矩阵,比如都是3,可以这样定义:[[3] * 10] * 10

PHP中文网

string.append(value)

高洛峰

你问的问题有些难回答,我怕我即使回答了你的问题,你也会有一些不明白的地方。“string应该怎样定义可以执行for循环?”这个是什么意思呢?

不过关于matrix的定义, 使用内置的list,可以这样做:

def matrix(shape=(5, 5), default=0):
    return [
        [default for j in range(shape[0])]
        for i in range(shape[1])
    ]
巴扎黑

比如定义一个含100个元素的inta,每个元素初始赋值0,这个怎样定义?
我想定义一个10*10的matrix,给定matrix的size,
应该怎样定义?

使用numpy:

# 初始化值为0的长度为一百的数组
arr = np.zeros(100)
# 一个10x10的矩阵
matrix = np.zeros((10,10))

string应该怎样定义可以执行for循环?

单纯的loop 一个string:

mystr = "hello, segfault!"
for mychar in mystr:
    print mychar

你是想像c 那样的使用字符串麽?

# 如果预先知道长度为length
mystr = ['' for _ in range(length)]
# 更改
mystr[3] = 's'
mystr[1] = 'c'
# 链接起来
final = ''.join(mystr)
# final: 'cs'
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号