私信  •  关注

Rocky Li

Rocky Li 最近回复了
5 年前
回复了 Rocky Li 创建的主题 » python sort()函数不按预期排序[重复]

使用 sort 具有 key 要修复:

all_poems = sorted(all_poems, key=lambda x: int(x.split('_')[1].split('.')[0]))

或:

# sort on self.
all_poems.sort(key=lambda x: int(x.split('_')[1].split('.')[0]))

这将根据文件编号和结果进行排序:

>>> all_poems:

['poem_1.txt',
 'poem_2.txt',
 'poem_10.txt',
 'poem_11.txt',
 'poem_12.txt',
 'poem_13.txt',
 'poem_14.txt',
 'poem_15.txt',
 'poem_16.txt',
 'poem_17.txt',
 'poem_18.txt',
 'poem_19.txt',
 'poem_20.txt',
 'poem_21.txt',
 'poem_100.txt']
5 年前
回复了 Rocky Li 创建的主题 » python:如何在不循环的情况下将行和列中的每个元素相乘

矢量化计算最好使用numpy:

import numpy as np

x = np.arange(1,6,2) # [1,3,5]
y = np.arange(2,9,2) # [2,4,6,8]
x = np.array([x]) # add dimension for transposing.
y = np.array([y])
result = np.dot(x.T, y)

结果:

array([[ 2,  4,  6,  8],
       [ 6, 12, 18, 24],
       [10, 20, 30, 40]])

看来你只是想修改 ['5xy', '+1y', '-2x'] ['5xy', '+y', '-2x'] ,等等。在这种情况下,我将使用regex:

import re
newlist = [re.sub('(?<=[+-])1(?=[A-Za-z])', '', e) for e in your_list]

测试:

k = ['5xy', '+1y', '-2x', '-1xy', '+11xy']
newlist = [re.sub('(?<=^[+-])1(?=[A-Za-z])', '', e) for e in k]
>>> newlist
['5xy', '+y', '-2x', '-xy', '+11xy']

不过,这看起来并不比你的解决方案好多少。

5 年前
回复了 Rocky Li 创建的主题 » 基于python中的条件创建一个列表以创建一个唯一的列表

不使用任何通过使用字典的导入的更简单的方法:

a= [0,0,0,1,1,1,3,3,3]
b= ['a','b','c','d','e','f','g','h','i']

d = {e: [] for e in set(a)} # Create a dictionary for each of a's unique key
[d[e].append(b[i]) for i, e in enumerate(a)] # put stuff into lists by index
lofl = list(d.values())

>>> lofl
[['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']]
5 年前
回复了 Rocky Li 创建的主题 » python决策逻辑与字典中的循环
team = input('enter team: ')
if team in x:
    print(x[team])
else:
    print('not found')

不需要循环。

我好像搞错了——我以为你会用钥匙找字典,但显然你是想用团队找城市。所以这里是:在一切之前,做这个:

x = {v:k for k, v in x.iteritems()}

这将成为字典 team: city 而不是 city: team 上面的代码仍然有效。

5 年前
回复了 Rocky Li 创建的主题 » 用二维递归编程python矩阵
numpy.zeros(2n+1,2m+1) 

会得到你想要的尺寸矩阵。

然后,您需要在计算中通过偏移重新居中矩阵,例如。 (x,y) 正常情况下 (x+n, y+m)