我想压缩两个不同长度的列表
例如
A = [1,2,3,4,5,6,7,8,9]
B = ["A","B","C"]
而且我期待这一点
[(1, 'A'), (2, 'B'), (3, 'C'), (4, 'A'), (5, 'B'), (6, 'C'), (7, 'A'), (8, 'B'), (9, 'C')]
但是内置zip不会重复与更大尺寸的列表配对.是否存在任何内置方式可以实现这一目标?谢谢
这是我的代码
idx = 0
zip_list = []
for value in larger:
    zip_list.append((value,smaller[idx]))
    idx += 1
    if idx == len(smaller):
        idx = 0
如何将3-Dimensinal元组转换为数组
a = []
a.append((1,2,4))
a.append((2,3,4))
在一个数组如:
b = [1,2,4,2,3,4]
执行此代码时实际发生的情况:
text = "word1anotherword23nextone456lastone333"
numbers = [x for x in text if x.isdigit()]
print(numbers)
我知道,这[]构成一个列表,.isdigit()如果字符串(文本)的元素是数字,则检查True或False。但是我不确定其他步骤,尤其是:for循环前面的“ x”是做什么的?
我知道输出是(下),但是如何完成?
Output: ['1', '2', '3', '4', '5', '6', '3', '3', '3']
我只想在我的函数中使用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
我希望t的值从1到99,并打印所有值的列表,但我总是得到l = [218].
我有一个字符串列表 (~400K),其中最长的字符串有~220 个字符。字符串用“.”表示对象的路径 作为分隔符。
我正在尝试构建一个自动完成功能,允许用户快速从列表中选择对象,而不是输入其完整路径。
自动完成功能基于根据用户输入过滤数据库。
我尝试了以下方法。
使用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))
regex方法 - 基准为 ~0.15 秒
regex = re.compile(r"{0}".format(partial_name))
filtered_list = list(filter(regex.search, database))
以上预计只会产生path.to.first.some.object.of.mine对象
我还考虑了Trie数据结构,但这个不支持“正则表达式”类型的过滤。
有没有更快的方法来过滤字符串?
对于使用 Python 进行回归分析的手头文本文件中存储的一些数据,我遇到了一些麻烦。
数据以如下格式存储:
2104,3,399900 1600,3,329900 2400,3,369000 ....
我需要做一些分析,比如通过以下方式找到平均值:(2104+1600+...)/数据数量
我认为适当的步骤是将数据存储到数组中。但我不知道如何存储它。我想到了两种方法。第一个是设置 3 个存储像的数组
a=[2104 1600 2400 ...] b=[3 3 3 ...] c=[399900 329900 36000 ...]
第二种方式是存储
a=[2104 3 399900], b=[1600 3 329900] and so on. 
哪一个更好?
另外,如何编写允许将数据存储到数组中的代码?我是这样想的:
with open("file.txt", "r") as ins:
array = []
elt.strip(',."\'?!*:') for line in ins:
array.append(line)
那是对的吗?
为什么下面的列表理解会出错?我缺少什么?
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))
我知道有更优雅/可读的解决方案,但这是为了我自己的理解。
错误: 类型错误:“int”对象不可迭代
所需输出: [1, 2, 3, 4, 5, 6, 11, 22, 33, 44, 55, 66, 111, 222, 333, 444, 555, 666]
有人可以解释以下代码行背后的语法含义:
temp3 = [x for x in temp1 if x not in s]
我知道这是为了找出 2 个列表之间的差异,但是这里的“x”代表什么?正在比较的列表中的每个单独元素?我明白这一点temp1并且s是列表。此外,x for x必须具有相同的变量还是可以是x for y?
如果我有一个字符串列表:
matches = [ 'string1', 'anotherstring', 'astringystring' ]
我还有另一个要测试的字符串:
teststring = 'thestring1'
我想测试每个字符串,如果有匹配,就做一些事情。我有:
match = 0
for matchstring in matches:
  if matchstring in teststring:
    match = 1
if !match:
  continue
这是一个循环,所以如果我们没有得到匹配,我们就再次循环(当然我可以反转这个逻辑,如果匹配则做一些事情),但是代码看起来很笨拙,而不是Pythonic,如果很容易理解的话。
我认为有更好的方法可以做到这一点,但我对 python 的理解并不如我所愿。有更好的方法吗?
请注意,“重复”是相反的问题(尽管相同的答案方法是相同的)。
问题陈述
给定一个数字列表和一个数字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()
我运行时遇到错误,我无法理解原因.
如果我有一个类似的列表:
my_list = [1,2,3,4]
和像这样的字典:
my_dict = {'bob':1, 'jane':2, 'fred':17}
我想使用列表查找字典键值,我可以这样做:
In [69]: for i in my_list:
    ...:     for k,v in my_dict.items():
    ...:         if i == v:
    ...:             print(k,v)
返回:
bob 1
jane 2
但我正在尝试更多地使用列表和字典理解,并且正在努力弄清楚如何通过理解来做到这一点......请问有什么帮助吗?
我想编写一段代码来计算列表每一行中元素的总和,并返回一个新的行总和列表。例如
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))
这将给出[10, 26, 42, 58]As的输出,第一行的总和等于 10,第二行的总和等于 26,依此类推。但是我不想使用内置的 sum 函数来做到这一点。我该怎么做呢?提前致谢。