我正在写一个小脚本,我在其中调用itertools.product:
for p in product(list1,list2,list3):
self.createFile(p)
Run Code Online (Sandbox Code Playgroud)
有没有办法让我在不事先知道要包含多少列表的情况下调用此函数?
谢谢
我有这个函数将迭代按长度,填充值和填充方向分成子列表:
def split(v,size,fill=0,direction='right'):
if size == 0: return []
lenv = len(v)
count = lenv/size
remainder = lenv%size
result = []
for i in range(0,lenv-remainder,size):
result.append(v[i:i+size])
if remainder > 0:
if direction == 'right':
result.append(v[count*size:] + [fill] * (size-remainder))
else:
result.append([fill] * (size-remainder) + v[count*size:])
return result
Run Code Online (Sandbox Code Playgroud)
因为我喜欢一个衬垫我想用地图重写它,但我不明白怎么做.到目前为止我有这个:
def j1(a,b):
return a + b
def j2(a,b):
return b
def split2(v,size,fill=0):
map(j1,(x for x in map(j2,v)))
Run Code Online (Sandbox Code Playgroud)
我不知道.任何提示?
是否可以解压缩列表或元组,使得值可以用作函数参数?即,我怎样才能使第二条线工作?
f(1,2,3)
f(???([1,2,3]))
Run Code Online (Sandbox Code Playgroud)
我现在正在手工做这件事,比如:
tmp1, tmp2, tmp3 = [1,2,3]
f(tmp1,tmp2,tmp3)
Run Code Online (Sandbox Code Playgroud)
context:我没有能力修改f(),但这是代码生成器的一部分,所以时髦的解决方案不是问题.
我已经创建了一个我想要传递给set.intersection()的集合列表
例如:
List_of_Sets = [{1,2,3},{3,4,5},{5,6,7}]
set.intersection(List_of_Sets)
Run Code Online (Sandbox Code Playgroud)
结果:
TypeError: descriptor 'intersection' requires a 'set' object but received a 'list'
Run Code Online (Sandbox Code Playgroud)
期望的输出:
{3,5}
Run Code Online (Sandbox Code Playgroud)
如何将列表中的每个集合作为单独的参数传递到set.intersection()?
我正在尝试在 python 中顺时针旋转 3*3 矩阵 90 度。我已经确定 [ i ][ j ] 处的元素转到 [ j ][ new_i ]。这里 new_i 依赖于前一个 i,所以我为它做了一个叫做循环减法的函数。
如果 i 是 0 那么 new_i 是 2
如果 i 是 1 那么 new_i 是 1
如果 i 是 2 那么 new_i 是 0
执行后,它给了我意想不到的结果。
我已经打印了每次迭代中发生的所有事情。我无法弄清楚某些元素是如何被不同的元素替换的。
'''
1 2 3 7 4 1
4 5 6 rotate 90 degrees 8 5 2
7 8 9 9 6 3
'''
def circular_subtraction(i):
new_i = i
if(i==0):
new_i = 2
elif(i==1): …Run Code Online (Sandbox Code Playgroud) 我试图找出在列表中解包迭代器的pythonic方法是什么。
例如:
my_iterator = zip([1, 2, 3, 4], [1, 2, 3, 4])
Run Code Online (Sandbox Code Playgroud)
我提供了以下几种在列表中解压缩迭代器的方法:
1)
my_list = [*my_iterator]
Run Code Online (Sandbox Code Playgroud)
2)
my_list = [e for e in my_iterator]
Run Code Online (Sandbox Code Playgroud)
3)
my_list = list(my_iterator)
Run Code Online (Sandbox Code Playgroud)
No 1)是我最喜欢的方法,因为它减少了代码,但是我想知道这是否也是pythonic方法。或者,也许除了Python 3之外,还有另一种方法可以实现这一目标?
简而言之,我正在尝试实现以下内容:
def function_one(value):
...
return a, b
def function_two(a, b):
...
Run Code Online (Sandbox Code Playgroud)
当我尝试
function_two(function_one(value))
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息:"function_two()缺少1个必需的位置参数:'b'"
有没有办法使这项工作按预期进行?谢谢!
我需要组合一个列表列表,例如在每个列表中选择 n 个元素
a=[[1,2,3,4,5],[6,7,8,9,10]]
n1=2
n2=3
Run Code Online (Sandbox Code Playgroud)
所以我的结果可能是这样的:
r=[[1,2,6,7,8],[1,2,6,7,9],...,[4,5,7,8,9],[4,5,8,9,10]]
Run Code Online (Sandbox Code Playgroud)
有什么干净的方法可以做到吗?或者我应该将列表分成更小的大小并使用 for 循环来调用 itertools?
该示例将函数zip应用于两个alist是:
x = [1, 2, 3]
y = [4, 5, 6]
zipped = zip(x, y)
#show
list(zipped)
[(1, 4), (2, 5), (3, 6)]
Run Code Online (Sandbox Code Playgroud)
但现在如果我有一些喜欢:
array = [ [1,2,3], [3,4,5] , [6,7,8] ... ]
Run Code Online (Sandbox Code Playgroud)
如何应用函数zip来显示如下:
[(1,3,6,...),(2,4,7,...),(3,5,8,...),... (....) ]
Run Code Online (Sandbox Code Playgroud) python ×10
list ×6
python-3.x ×2
arguments ×1
arrays ×1
combinations ×1
function ×1
matrix ×1
reduce ×1
set ×1
text ×1
text-files ×1
tuples ×1
unpack ×1