python如何替换列表的元素_如何在Python中的列表列表中按值替换元素?(How to replace elements by value in a list of lists in Pytho...

如何在Python中的列表列表中按值替换元素?(How to replace elements by value in a list of lists in Python?)

我有:

counts = [[2, 2, 2, 0], [2, 2, 1, 0]]

countsminusone = [[1, 1, 1, -1], [1, 1, 0, -1]] #Which is counts - 1

对于每个值,其中countminusone为0或小于0,我想用1替换它。

countsminusone1 = [[1 if x == 0 or x < 0 else x for x in pair] for pair in countsminusone] #I cannot get this to work

然后除以countminusone除以计数

Divide = [[n/d for n, d in zip(subq, subr)] for subq, subr in zip(counts, countsminusone)] #This should work if the above works

I have:

counts = [[2, 2, 2, 0], [2, 2, 1, 0]]

countsminusone = [[1, 1, 1, -1], [1, 1, 0, -1]] #Which is counts - 1

For every value, where countsminusone is 0 or less than 0, I want to replace it with 1.

countsminusone1 = [[1 if x == 0 or x < 0 else x for x in pair] for pair in countsminusone] #I cannot get this to work

And then divide counts by countsminusone

Divide = [[n/d for n, d in zip(subq, subr)] for subq, subr in zip(counts, countsminusone)] #This should work if the above works

原文:https://stackoverflow.com/questions/39980292

2019-12-09 18:12

满意答案

我认为你这太复杂了。 让我们以最简单的方式说明你真正想做的事情:

目标:将列表列表中的每个数字n除以n - 1,或者,如果n - 1 <= 0,则除以1。

这可以在不创建额外列表和压缩的情况下完成:

counts = [[2, 2, 2, 0], [2, 2, 1, 0]]

divided = [[i / max(i - 1, 1) for i in sublst] for sublst in counts]

请注意,在这种情况下, max(i - 1, 1)将始终为1。

I think you are making this much too complicated. Let's state what you actually want to do in the simplest way:

GOAL: Divide every number n in list of lists by n - 1 or, if n - 1 <= 0, by 1.

This can be done without creating extra lists and zipping:

counts = [[2, 2, 2, 0], [2, 2, 1, 0]]

divided = [[i / max(i - 1, 1) for i in sublst] for sublst in counts]

Note that in this case, max(i - 1, 1) will always be 1.

2016-10-11

相关问答

具有compare功能,根据元素是否相等返回True或False是不理想的。 基本上,您必须将每个元素与每个现有组中的一些“原型”进行比较。 像这样的东西: def group(elements, comp_func):

groups = {}

for x in elements:

for y in groups:

if comp_func(x, y):

groups[y].append(x)

...

当exampleList可以是任何长度时,请注意这种情况。 exampleList = [['first','second','third'],['A','B','C'], ['1','2','3'],[4,5,6]]

z=list(zip(*exampleList[1:]))

d={k:list(z[i]) for i,k in enumerate(exampleList[0])}

print(d)

产量 {'first': ['A', '1', 4], 'second': ['B', '...

这是使用Counter的解决方案。 检查每个内部列表中是否只有一个计数的值,然后打印相应的索引( enumerate )。 from collections import Counter

from itertools import chain

c = Counter(chain.from_iterable(l))

idx = [i for i, x in enumerate(l) if any(c[y] == 1 for y in x)]

print(idx)

[0, 2, 3]

可能的优...

something = min((x for x in list1 if isinstance(x[2], float)), key=lambda x: x[2])

顺便说一句,恕我直言,这种情况下最适合的数据结构将是一个tuple list ,因为它们构成固定大小的异构集合(在这种情况下为三元组),如下所示: list1 = [(1, 0, 2.83), (3, 1, 1.0), (5, 4, 2.83), (7, 0, 4.47), (6, 5, 4.24), (3, 2, 'x')]

s...

对于简单的问题,嵌套循环设计通常可以让您快速解决问题,而无需担心列表展平功能的细节。 for i in range(len(A)):

time = A[i][0]

isValidTime = False

for time_segment in B:

if time_segment[0] <= time <= time_segment[1]:

isValidTime = True

break

if not...

这与其他答案一样,只是以功能方式走这条路: reduce(getitem, loc[:-1], nested)[loc[-1]] = replace

在Python 3中,您需要从functools导入reduce 。 getitem来自operator模块。 如果您只有列表,则可以使用list.__getitem__ 。 说明: reduce从nested开始,并用getitem(thecurrentvalue, i) loc[:-1]每个值i getitem(thecurrentvalue,...

def flatten(lst):

for element in lst:

if hasattr(element,"__iter__"):

yield from flatten(element)

elif not element is None:

yield element

new_list = flatten(L)

我会先为你解决这个问题,首先从发电机开始。 yield关键字是return姐妹,但具有不同...

widths = [len(max(lst, key=len)) for lst in tableData]

对于名为tableData的列表列表,这给出了: [8, 5, 5]

说明: [max(lst, key=len) for x in tableData]您提供了一个列表,其中包含每个嵌套列表的最长字符串。 使用len() ,然后获取这些的长度。 使用以下方法可以获得相同的结果: widths = [len(sorted(lst, key=len)[-1]) for lst in ta...

将子列表转换为元组,例如: In [2]: a = [[2,3],[5,6],[8,9]]

In [3]: b = [[2,3],[5,6],[8,9], [10,11]]

In [4]: set(tuple(x) for x in a).issubset(tuple(x) for x in b)

Out[4]: True

Convert your sublists to tuples, for example: In [2]: a = [[2,3],[5,6],[8,9]]

In [3]...

我认为你这太复杂了。 让我们以最简单的方式说明你真正想做的事情: 目标:将列表列表中的每个数字n除以n - 1,或者,如果n - 1 <= 0,则除以1。 这可以在不创建额外列表和压缩的情况下完成: counts = [[2, 2, 2, 0], [2, 2, 1, 0]]

divided = [[i / max(i - 1, 1) for i in sublst] for sublst in counts]

请注意,在这种情况下, max(i - 1, 1)将始终为1。 I think you...

相关文章

列表就像java里的collection,所具有的特性也要比元组更多,更灵活,其character总结

...

abs(x) 说明:abs(x)返回x的绝对值,如果参数是复数,则返回复数的模; 参数x:整

...

Windowsis an extremely effective and a an efficient

...

python2和python3的区别,1.性能 Py3.0运行 pystone benchmark的速

...

原文地址:http://wiki.woodpecker.org.cn/moin/ObpLovelyPy

...

python里的字典就像java里的HashMap,以键值对的方式存在并操作,其特点如下:通过键来存取

...

Python 字符串操作,字符串序列用于表示和存储文本,python中字符串是不可变的,一旦声明,不能

...

原文地址:http://blog.chinaunix.net/uid-25525723-id-3630

...

Python的运算符和其他语言类似(我们暂时只了解这些运算符的基本用法,方便我们展开后面的内容,高级应

...

最新问答

如果启用了复制处理程序,请确保将其置于其中一个安全角色之后。 我见过人们做的另一件事是在不同的端口上运行admin。 最好在需要auth的页面上使用SSL,这样你就不会发送明确的密码,因此管理和复制将发生在8443上,而常规查询将在8080上发生。 如果您要签署自己的证书,请查看此有用的SO页面: 如何在特定连接上使用不同的证书? I didn't know that /admin was the context for SOLR admin because /admin does not re

第一:在您的样本中,您有: 但是你在询问 //td[@class=‘CarMiniProfile-TableHeader’] (注意TableHeader中的大写'T')。 xpath区分大小写。 第二:通过查询// td [@ class ='CarMiniProfile-TableHeader'] / td,你暗示你在外部td中有一个'td'元素,而它们是兄弟姐妹。 有很多方法可以在这里获得制作和模型

这是你的答案: http://jsfiddle.net/gPsdk/40/ .preloader-container { position: absolute; top: 0px; right: 0px; bottom: 0px; left: 0px; background: #FFFFFF; z-index: 5; opacity: 1; -webkit-transition: all 500ms ease-out;

问题是,在启用Outlook库引用的情况下, olMailItem是一个保留常量,我认为当您将Dim olMailItem as Outlook.MailItem ,这不是问题,但是尝试设置变量会导致问题。 以下是完整的解释: 您已将olMailItem声明为对象变量。 在赋值语句的右侧,在将其值设置为对象的实例之前,您将引用此Object 。 这基本上是一个递归错误,因为你有对象试图自己分配自己。 还有另一个潜在的错误,如果之前已经分配了olMailItem ,这个语句会引发另一个错误(可能是

我建议使用wireshark http://www.wireshark.org/通过记录(“捕获”)设备可以看到的网络流量副本来“监听”网络上发生的对话。 当您开始捕获时,数据量似乎过大,但如果您能够发现任何看起来像您的SOAP消息的片段(应该很容易发现),那么您可以通过右键单击并选择来快速过滤到该对话'关注TCP Stream'。 然后,您可以在弹出窗口中查看您编写的SOAP服务与Silverlight客户端之间的整个对话。 如果一切正常,请关闭弹出窗口。 作为一个额外的好处,wireshar

Android默认情况下不提供TextView的合理结果。 您可以使用以下库并实现适当的aligntment。 https://github.com/navabi/JustifiedTextView Android Does not provide Justified aligntment of TextView By default. You can use following library and achieve proper aligntment. https://github.com/

你的代码适合我: class apples { public static void main(String args[]) { System.out.println("Hello World!"); } } 我将它下载到c:\ temp \ apples.java。 以下是我编译和运行的方式: C:\temp>javac -cp . apples.java C:\temp>dir apples Volume in drive C is HP_PAV

12个十六进制数字(带前导0x)表示48位。 那是256 TB的虚拟地址空间。 在AMD64上阅读wiki(我假设你在上面,对吗?)架构http://en.wikipedia.org/wiki/X86-64 12 hex digits (with leading 0x) mean 48 bits. That is 256 TB of virtual address space. Read wiki on AMD64 (I assume that you are on it, right?) ar

这将取决于你想要的。 对象有两种属性:类属性和实例属性。 类属性 类属性对于类的每个实例都是相同的对象。 class MyClass: class_attribute = [] 这里已经为类定义了MyClass.class_attribute ,您可以使用它。 如果您创建MyClass实例,则每个实例都可以访问相同的class_attribute 。 实例属性 instance属性仅在创建实例时可用,并且对于类的每个实例都是唯一的。 您只能在实例上使用它们。 在方法__init__中定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值