python字符串索引赋值_Python:索引赋值中的for循环

[str(wi) for wi in wordids]a = [str(wi) for wi in wordids]

与a = []

for wi in wordids:

a.append(str(wi))

所以createkey='_'.join(sorted([str(wi) for wi in wordids]))

从wordids中的每个项创建一个字符串列表,然后对该列表进行排序,并使用_作为分隔符将其连接到一个大字符串中。

正如agf所正确指出的,您还可以使用生成器表达式,它看起来就像一个列表理解,但是带有括号而不是括号。如果以后不需要列表,这可以避免构建列表(除了迭代它)。如果你已经有了括号,就像这里的sorted(...)一样,你可以简单地删除括号。

但是,在这种特殊情况下,您不会获得性能优势(实际上,它会慢10%左右;我对它进行了计时),因为sorted()无论如何都需要构建一个列表,但看起来更好一些:createkey='_'.join(sorted(str(wi) for wi in wordids))normalizedscores = dict([(u,float(l)/maxscore) for (u,l) in linkscores.items()])

遍历字典linkscores中的项,其中每个项都是键/值对。它创建一个键/l/maxscore元组列表,然后将该列表转换回字典。

但是,自从Python 2.7以来,您还可以使用normalizedscores = {u:float(l)/maxscore for (u,l) in linkscores.items()}

以下是一些计时数据:

Python 3.2.2版>>> import timeit

>>> timeit.timeit(stmt="a = '_'.join(sorted([str(x) for x in n]))", setup="import random; n = [random.randint(0,1000) for i in range(100)]")

61.37724242267409

>>> timeit.timeit(stmt="a = '_'.join(sorted(str(x) for x in n))", setup="import random; n = [random.randint(0,1000) for i in range(100)]")

66.01814811313774

Python 2.7.2版>>> import timeit

>>> timeit.timeit(stmt="a = '_'.join(sorted([str(x) for x in n]))", setup="import random; n = [random.randint(0,1000) for i in range(100)]")

58.01728623923137

>>> timeit.timeit(stmt="a = '_'.join(sorted(str(x) for x in n))", setup="import random; n = [random.randint(0,1000) for i in range(100)]")

60.58927580777687

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值