小编Noo*_*der的帖子

分离字符串

给定一个字符串,我想生成所有可能的组合.换句话说,将逗号放在字符串中的所有可能方法.

例如:

input:  ["abcd"]
output: ["abcd"]
        ["abc","d"]
        ["ab","cd"]
        ["ab","c","d"]
        ["a","bc","d"]
        ["a","b","cd"]
        ["a","bcd"]
        ["a","b","c","d"]
Run Code Online (Sandbox Code Playgroud)

我有点坚持如何生成所有可能的列表.组合将只给出包含字符串集子集长度的列表,排列将提供所有可能的订购方式.

由于遍历切片,我可以在列表中只使用一个逗号来创建所有情况,但是我不能用两个逗号来表示例如"ab","c","d"和"a","b" ,"光盘"

我的尝试w/slice:

test="abcd"

for x in range(len(test)):
     print test[:x],test[x:]
Run Code Online (Sandbox Code Playgroud)

python permutation python-itertools

23
推荐指数
2
解决办法
703
查看次数

比较两个列表以查找更大的列表

我有两个列表,需要通过它们的最大元素进行比较,如果它是并列的,它们的第二大元素,如果是并列的,则第三大等等迭代到整个数组.

例如:

list1= [0,2,3,6,12]
list2= [1,2,3,6,12]
list3= [1,4,5,8,12]
list4= [1,4,5,9,12]
Run Code Online (Sandbox Code Playgroud)

所以list4> list3> list2> list1.

我写了一个完成这个的函数:

def compare(x,y):
    if sorted(x)==sorted(y):
        return "Tie"
    for index in range(len(x)-1,-1,-1):
        if sorted(x)[index]>sorted(y)[index]:
            return x
        elif sorted(x)[index]<sorted(y)[index]:
            return y
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一个更整洁,更有效的方式来编写函数,因为它似乎不是Pythonic.

编辑:使用"<"和">"比较列表将从最小索引到最大索引,而不是最大索引到最小索引的列表排序.反转将使">"和"<"成为最简单的解决方案.

python arrays list

7
推荐指数
1
解决办法
1340
查看次数

将输入(从标准输入)转换为列表

我需要将输入(整数系列)转换为一堆列表.

样本输入:

3
2
2 2 4 5 7
Run Code Online (Sandbox Code Playgroud)

样本输出:

list1=[3]
list2=[2]
list3=[2,2,4,5,7]
Run Code Online (Sandbox Code Playgroud)

我想这样做:

list=[]
import sys
for line in sys.stdin:
    list.append(line)
Run Code Online (Sandbox Code Playgroud)

但打印清单返回

['3\n', '2\n', '2 2 4 5 7']
Run Code Online (Sandbox Code Playgroud)

python arrays input list

4
推荐指数
1
解决办法
2万
查看次数

查找由2个独特的数组元素(python)生成的所有产品

你如何确定python中数组中所有数字的乘积/和/差/除?例如乘法:

array=[1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

输出只有1*2,1*3,1*4,2*3,2*4,3*4:

[2,3,4,6,8,12] 
Run Code Online (Sandbox Code Playgroud)

我理解"for"和"while"循环是如何工作但却无法找出解决方案 - 如何在len(数组)变量数组中找到每个唯一的2个变量集?在我这样做后,我可以做相应的乘法/除法/减法/等.

我所能做的就是阵列的产物:

array=[1,2,3]
product = 1
for i in array:
    product *= i
print product
Run Code Online (Sandbox Code Playgroud)

python arrays loops

4
推荐指数
2
解决办法
198
查看次数

消除列表的重复(Python)

我有一个列表列表,需要删除所有具有相同第三元素的列表,并保存1.

例如:

x=[[1,2,3],[1,3,3],[5,6,3],[2,4,6],[8,5,9],[10,5,9]]
Run Code Online (Sandbox Code Playgroud)

可以变成:

x=[[1,2,3],[2,4,6],[8,5,9]]
Run Code Online (Sandbox Code Playgroud)

我试过一个解决方案,使用lambda消除所有具有相同第二个索引的列表,但我不知道如何保存每个元素之一,如set()呢 - 我得到:

x=[[2,4,6]]
Run Code Online (Sandbox Code Playgroud)

python list duplicate-removal

3
推荐指数
1
解决办法
293
查看次数

功能中的"返回"仅返回一个值

假设我写了一个for循环,将所有数字1输出到x:

x=4
for number in xrange(1,x+1):
    print number,
#Output:
1
2
3
4
Run Code Online (Sandbox Code Playgroud)

现在,将相同的for循环放入函数中:

def counter(x):
    for number in xrange(1,x+1):
        return number
print counter(4)
#Output:
1
Run Code Online (Sandbox Code Playgroud)

为什么在将for-loop放入函数时只获取一个值?

我一直在通过将for循环的所有结果附加到列表,然后返回列表来回避这个问题.

为什么for循环会附加所有结果,而不只是一个?:

def counter(x):
    output=[]
    for number in xrange(1,x+1):
        output.append(number)
    return output
Run Code Online (Sandbox Code Playgroud)

返回所有值的最佳方法是什么,附加到列表似乎非常低效.

python printing for-loop return function

3
推荐指数
2
解决办法
5391
查看次数