在下面的方法定义,什么是*和**为做param2?
def foo(param1, *param2):
def bar(param1, **param2):
Run Code Online (Sandbox Code Playgroud) python syntax parameter-passing variadic-functions argument-unpacking
如何从一组列表中获取笛卡尔积(每种可能的值组合)?
输入:
somelists = [
[1, 2, 3],
['a', 'b'],
[4, 5]
]
Run Code Online (Sandbox Code Playgroud)
期望的输出:
[(1, 'a', 4), (1, 'a', 5), (1, 'b', 4), (1, 'b', 5), (2, 'a', 4), (2, 'a', 5) ...]
Run Code Online (Sandbox Code Playgroud) 我有任意数量的变量,每个变量可以取任意数量的有效值。例如。a-(a1,a2,a3),b-(b1,b2),c-(c1,c2,c3,c4,c5)。现在我想要下面的字典列表
[
{a:a1,b:b1,c:c1},
{a:a1,b:b1,c:c2},
{a:a1,b:b1,c:c3},
.
.
.
{a:a3,b:b2,c:c3}
]
Run Code Online (Sandbox Code Playgroud)
在上述情况下,总共3 * 2 * 5 = 30个组合。如何在python中创建它们。
我可以for为每个变量设置三个循环,如下所示
result_list = list()
for a_val in [a1,a2,a3]:
for b_val in [b1,b2]:
for c_val in [c1,c2,c3,c4,c5]:
result_list.append({a:a_val,b:b_val,c:c_val})
Run Code Online (Sandbox Code Playgroud)
但是变量的数量也有所不同。而不是3个变量,我想同时应用5个变量(a,b,c,d,e),依此类推。如何使用通用代码在python中实现
考虑以下两个字符串序列:
Salutation = ["Hello", "Hi"]
Names = ["Alice", "Matt", "Franck", "Julia"]
Run Code Online (Sandbox Code Playgroud)
我正在寻找将这些序列合并的简洁方法
["Hello_Alice", "Hi_Alice", "Hello_Matt", "Hi_Matt", "Hello_Franck", "Hi_Franck", "Hello_Julia", "Hi_Julia"]
Run Code Online (Sandbox Code Playgroud)
或与任何分隔符.
R中的等价物是:
c(outer(Salutations, Names, paste, sep="_"))
Run Code Online (Sandbox Code Playgroud) 我需要在 python 中连接两个不同的字符串列表。
例如:
list1 = ['A','B','C']
list2 = ['D', 'E']
Run Code Online (Sandbox Code Playgroud)
我想获得
list3 = ['AD', 'AE', 'BD', 'BE', 'CD', 'CE']
Run Code Online (Sandbox Code Playgroud)
我试过了:
list3 = zip(list1,list2)
Run Code Online (Sandbox Code Playgroud)
它返回
list3 = [('A','D'), ('B','E')]
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
list(itertools.product(list1, list2))
但它返回
[('A','D'),('A','E'),...,('C','E')] 而不是 ['AD', 'AE', 'BD', 'BE'、'CD'、'CE']
任何想法?谢谢
python ×5
list ×2
string ×2
character ×1
combinations ×1
outer-join ×1
python-3.x ×1
sequence ×1
syntax ×1