因此,我有以下代码示例;同时迭代与枚举结合的多个序列,将值分配给元组变量,然后将其输出。
public class AlarmReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
MediaPlayer player = MediaPlayer.create(context, R.raw.alarmtone);
String alarmAction = intent.getAction();
if (alarmAction.equals("ALARM_ON")) {
Intent intent1 = new Intent(context, WakeUpScreen.class);
context.startActivity(intent1);
player.setLooping(true);
player.setVolume(100, 100);
player.start();
} else if (alarmAction.equals("ALARM_OFF")) {
player.stop();
player.release();
}
}
}
如果可能,我想实现的目标是这样的: 我一直在搜索,但是找不到通过以上方法实现结果的解决方案:
def PairValuesWithIndexToTuples(self,val1,val2):
t =()
for i, (a,b) in enumerate(zip(val1,val2)):
t += (i,a,b)
return t
或
def PairValuesWithIndexToTuples(self,val1,val2):
t =()
t += for i, (a,b) in enumerate(zip(val1,val2))
return t
答案 0 :(得分:0)
您可以创建一个生成器表达式来创建元组,然后从该表达式chain.from_iterable
中获取平坦化的结果
from itertools import chain
tuple(chain.from_iterable((i, a, b) for i, (a,b) in enumerate(zip(val1,val2))))
作为多行函数,它看起来要好得多
def pair_with_index(*its):
e = enumerate(zip(*its))
flattened = ((i, *t) for i, t in e)
c = chain.from_iterable(flattened)
return tuple(c)
pair_with_index([1, 2, 3], [4, 5, 6])
# (0, 1, 4, 1, 2, 5, 2, 3, 6)
编辑:
我的原始代码(用于一个元组)是
def pair_with_index(val1, val2):
return tuple((i, a, b) for i, (a,b) in enumerate(zip(val1,val2)))
pair_with_index([1, 2, 3], [4, 5, 6])
# ((0, 1, 4), (1, 2, 5), (2, 3, 6))
答案 1 :(得分:0)
也许您在寻找一个扁平化的列表或扁平化的元组?您的问题不清楚,所以我只介绍所有内容。
In [79]: val1 = [1,2,3]
In [80]: val2=[4,5,6]
In [81]: [(i, a, b) for i, (a,b) in enumerate(zip(val1,val2))]
Out[81]: [(0, 1, 4), (1, 2, 5), (2, 3, 6)]
In [82]: [k for j in [(i, a, b) for i, (a,b) in enumerate(zip(val1,val2))] for k in j]
Out[82]: [0, 1, 4, 1, 2, 5, 2, 3, 6]
In [84]: tuple(k for j in [(i, a, b) for i, (a,b) in enumerate(zip(val1,val2))] for k in j)
Out[84]: (0, 1, 4, 1, 2, 5, 2, 3, 6)
答案 2 :(得分:-2)
因为这很清楚...
sum(((i, a, b) for i, (a,b) in enumerate(zip(val1, val2))), ())
示例:
val1 = 'hello'
val2 = range(5)
sum(((i, a, b) for i, (a,b) in enumerate(zip(val1, val2))), ())
# -> (0, 'h', 0, 1, 'e', 1, 2, 'l', 2, 3, 'l', 3, 4, 'o', 4)
答案 3 :(得分:-2)
虽然我不主张滥用sum
,但可以这样做以将元组连接在一起
sum(tuples, ())
或者您的情况
sum(((i, a, b) for i, (a, b) in enumerate(zip(val1, val2))), ())
重要的是要注意,鉴于求和的行为,这可能效率很低。在这种情况下还不太清楚。
注意:我不主张在生产代码中使用它。仅仅是为了证明这是可能的。