相关疑难解决方法(0)

如何压缩两个不同大小的列表?

我想压缩两个不同长度的列表

例如

A = [1,2,3,4,5,6,7,8,9]
B = ["A","B","C"]
Run Code Online (Sandbox Code Playgroud)

而且我期待这一点

[(1, 'A'), (2, 'B'), (3, 'C'), (4, 'A'), (5, 'B'), (6, 'C'), (7, 'A'), (8, 'B'), (9, 'C')]
Run Code Online (Sandbox Code Playgroud)

但是内置zip不会重复与更大尺寸的列表配对.是否存在任何内置方式可以实现这一目标?谢谢

这是我的代码

idx = 0
zip_list = []
for value in larger:
    zip_list.append((value,smaller[idx]))
    idx += 1
    if idx == len(smaller):
        idx = 0
Run Code Online (Sandbox Code Playgroud)

python list python-3.x

36
推荐指数
5
解决办法
3万
查看次数

Python将元组转换为数组

如何将3-Dimensinal元组转换为数组

a = []
a.append((1,2,4))
a.append((2,3,4))
Run Code Online (Sandbox Code Playgroud)

在一个数组如:

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

python list

24
推荐指数
3
解决办法
8万
查看次数

“ x for x in”语法的含义是什么?

执行此代码时实际发生的情况:

text = "word1anotherword23nextone456lastone333"
numbers = [x for x in text if x.isdigit()]
print(numbers)
Run Code Online (Sandbox Code Playgroud)

我知道,这[]构成一个列表,.isdigit()如果字符串(文本)的元素是数字,则检查True或False。但是我不确定其他步骤,尤其是:for循环前面的“ x”是做什么的?

我知道输出是(下),但是如何完成?

Output: ['1', '2', '3', '4', '5', '6', '3', '3', '3']
Run Code Online (Sandbox Code Playgroud)

python for-loop list

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

如何在一个依赖于两个变量的函数中为一个变量使用'for'循环?

我只想在我的函数中使用for循环作为t变量:

l = []

def func(s):   
    for i in range(1, 100):
        t = i
        p = t * 2 + s * 2
    return p

l.append(func(10))

print l
Run Code Online (Sandbox Code Playgroud)

我希望t的值从1到99,并打印所有值的列表,但我总是得到l = [218].

python for-loop

6
推荐指数
1
解决办法
1217
查看次数

在Python中过滤字符串列表最快的方法是什么?

我有一个字符串列表 (~400K),其中最长的字符串有~220 个字符。字符串用“.”表示对象的路径 作为分隔符。

我正在尝试构建一个自动完成功能,允许用户快速从列表中选择对象,而不是输入其完整路径。

自动完成功能基于根据用户输入过滤数据库。

我尝试了以下方法。

  1. 使用filter- 基准测试为 ~0.8 秒

    database = list()
    database.append("path.to.first.object")
    database.append("path.to.first.some.object.of.mine")
    ....
    database.append("path.to.last.object") # ~430K items 
    
    partial_name = "som"
    filtered_list = list(filter(lambda x: partial_name in x, database))
    
    Run Code Online (Sandbox Code Playgroud)
  2. regex方法 - 基准为 ~0.15 秒

    regex = re.compile(r"{0}".format(partial_name))
    filtered_list = list(filter(regex.search, database))
    
    Run Code Online (Sandbox Code Playgroud)

以上预计只会产生path.to.first.some.object.of.mine对象

我还考虑了Trie数据结构,但这个不支持“正则表达式”类型的过滤。

有没有更快的方法来过滤字符串?

python tkinter

6
推荐指数
0
解决办法
1331
查看次数

如何使用Python将文本文件中的数据读入数组

对于使用 Python 进行回归分析的手头文本文件中存储的一些数据,我遇到了一些麻烦。

数据以如下格式存储:

2104,3,399900 1600,3,329900 2400,3,369000 ....
Run Code Online (Sandbox Code Playgroud)

我需要做一些分析,比如通过以下方式找到平均值:(2104+1600+...)/数据数量

我认为适当的步骤是将数据存储到数组中。但我不知道如何存储它。我想到了两种方法。第一个是设置 3 个存储像的数组

a=[2104 1600 2400 ...] b=[3 3 3 ...] c=[399900 329900 36000 ...]
Run Code Online (Sandbox Code Playgroud)

第二种方式是存储

a=[2104 3 399900], b=[1600 3 329900] and so on. 
Run Code Online (Sandbox Code Playgroud)

哪一个更好?

另外,如何编写允许将数据存储到数组中的代码?我是这样想的:

with open("file.txt", "r") as ins:
array = []
elt.strip(',."\'?!*:') for line in ins:
array.append(line)
Run Code Online (Sandbox Code Playgroud)

那是对的吗?

python list

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

使用列表理解展平元组列表的列表

为什么下面的列表理解会出错?我缺少什么?

a = [
[(1, 2), (11, 22), (111, 222)],
[(3, 4), (33, 44), (333, 444)],
[(5, 6), (55, 66), (555, 666)]
]

b = [k for k in j for j in i for i in a]
print(sorted(b))
Run Code Online (Sandbox Code Playgroud)

我知道有更优雅/可读的解决方案,但这是为了我自己的理解。

错误: 类型错误:“int”对象不可迭代

所需输出: [1, 2, 3, 4, 5, 6, 11, 22, 33, 44, 55, 66, 111, 222, 333, 444, 555, 666]

list-comprehension python-3.x

5
推荐指数
1
解决办法
565
查看次数

列表中的差异 - Python - 语法解释

有人可以解释以下代码行背后的语法含义:

temp3 = [x for x in temp1 if x not in s]
Run Code Online (Sandbox Code Playgroud)

我知道这是为了找出 2 个列表之间的差异,但是这里的“x”代表什么?正在比较的列表中的每个单独元素?我明白这一点temp1并且s是列表。此外,x for x必须具有相同的变量还是可以是x for y

python list

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

针对一个字符串测试多个子字符串

如果我有一个字符串列表:

matches = [ 'string1', 'anotherstring', 'astringystring' ]
Run Code Online (Sandbox Code Playgroud)

我还有另一个要测试的字符串:

teststring = 'thestring1'
Run Code Online (Sandbox Code Playgroud)

我想测试每个字符串,如果有匹配,就做一些事情。我有:

match = 0
for matchstring in matches:
  if matchstring in teststring:
    match = 1
if !match:
  continue
Run Code Online (Sandbox Code Playgroud)

这是一个循环,所以如果我们没有得到匹配,我们就再次循环(当然我可以反转这个逻辑,如果匹配则做一些事情),但是代码看起来很笨拙,而不是Pythonic,如果很容易理解的话。

我认为有更好的方法可以做到这一点,但我对 python 的理解并不如我所愿。有更好的方法吗?

请注意,“重复”是相反的问题(尽管相同的答案方法是相同的)。

python

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

检查数字是否是其他2个数字的总和

问题陈述

给定一个数字列表和一个数字k,返回列表中的任何两个数字是否加起来为k.

鉴于[1, 2, 3]k = 5,return True从那以后2 + 3 = 5.

这就是我试图做的事情:

def pairs(n):
    for i in range(len(n)):
        for j in range(i+1, len()):
            yield n[i], n[j]


def ListCheck():
    number = input("Give me a number:")
    val = int(number)
    nums = [1,2,3]
    for i, j in pairs(nums):
        if j + i == val:
            print(True)
            break


ListCheck()
Run Code Online (Sandbox Code Playgroud)

我运行时遇到错误,我无法理解原因.

python

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

从列表中查找字典值(理解)

如果我有一个类似的列表:

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

和像这样的字典:

my_dict = {'bob':1, 'jane':2, 'fred':17}
Run Code Online (Sandbox Code Playgroud)

我想使用列表查找字典键值,我可以这样做:

In [69]: for i in my_list:
    ...:     for k,v in my_dict.items():
    ...:         if i == v:
    ...:             print(k,v)
Run Code Online (Sandbox Code Playgroud)

返回:

bob 1
jane 2
Run Code Online (Sandbox Code Playgroud)

但我正在尝试更多地使用列表和字典理解,并且正在努力弄清楚如何通过理解来做到这一点......请问有什么帮助吗?

python

-2
推荐指数
1
解决办法
43
查看次数

Python计算列表中行的总和

我想编写一段代码来计算列表每一行中元素的总和,并返回一个新的行总和列表。例如

def row_sums(square):

    square = [
       [1, 2, 3, 4],
       [5, 6, 7, 8],
       [9, 10, 11, 12],
       [13, 14, 15, 16]
    ]
    print(row_sums(square))
Run Code Online (Sandbox Code Playgroud)

这将给出[10, 26, 42, 58]As的输出,第一行的总和等于 10,第二行的总和等于 26,依此类推。但是我不想使用内置的 sum 函数来做到这一点。我该怎么做呢?提前致谢。

python list

-6
推荐指数
1
解决办法
1万
查看次数

标签 统计

python ×11

list ×6

for-loop ×2

python-3.x ×2

list-comprehension ×1

tkinter ×1